什麼是CSS注入
大家對XSS攻擊都非常熟悉了,可能很少關注到CSS注入攻擊,以下行爲有可能受到CSS注入攻擊:
- 從用戶提供的URL中引入CSS文件
- CSS代碼中採用了用戶的輸入數據
可以看下以下兩個例子
https://www.owasp.org/index.p...
http://www.thespanner.co.uk/2...
原理
CSS屬性選擇器讓開發者可以根據屬性標籤的值匹配子字符串來選擇元素。 這些屬性值選擇器可以做以下操作:
1.如果字符串以子字符串開頭,則匹配;
2.如果字符串以子字符串結尾,則匹配;
3.如果字符串在任何地方包含子字符串,則匹配;
4.屬性選擇器能讓開發人員查詢單個屬性的頁面HTML標記,並且匹配它們的值。
而在實際環境中,如果一些敏感信息會被存放在HTML標籤內,如CSRF token存儲在隱藏表單的屬性值中,這使得我們可以將CSS選擇器與表單中的屬性進行匹配,並根據表單是否與起始字符串匹配,加載一個外部資源,例如背景圖片,來嘗試猜測屬性的起始字母。通過這種方式,攻擊者可以進行逐字猜解並最終獲取到完整的敏感數值。
防禦策略
想要解決這個問題受害者可以在其服務器實施內容安全策略(CSP),防止攻擊者從外部加載CSS代碼。
總結
作爲前端開發者,我們與用戶最近,也是網絡安全防護的第一道線,要時刻關注來自各方面的網絡攻擊,保障用戶信息的安全。
參考文獻
https://portswigger.net/kb/is...
https://www.freebuf.com/artic...
https://24ways.org/2018/secur...