XSS攻擊原理
反射型
發出請求時,xss代碼出現在URL中,作為輸入提交到服務器端,服務器端解析后響應,xss代碼隨響應內容一起傳回瀏覽器,最后瀏覽器解析執行xss代碼。這個過程像一次反射,故叫反射型xss。
存儲型
存儲型xss和反射型xss的差別僅在於,提交的代碼會存儲在服務器端(數據庫,內存,文件系統等),下次請求目標頁面時不用再提交xss代碼。
XSS攻擊手段
反射型
反射xss存儲在URL中。
測試語句:
id=<img src="null" onerror="alert(1)"/> 主動觸發
id=<p onclick="alert('點我')">點我</p> 被動觸發
id=<iframe src="//jd.com"></iframe> 插入廣告
<script>alert(1)</script>
<p>skii<img src="null" alt="" onerror="alert(1)"></p>
<p>skii<img src="null" onerror="alert(1)"></p><button onclick=“alert("攻擊我")”>攻擊我</button>
javascript:alert('XSS')"
Unicode下:alert `A `
\u0061\u006c\u0065\u0072\u0074 `A `
x5h'><script>alert(1)</script>rm
<script>alert(document.cookie)</script>
"/><script>alert(document.cookie)</script>
存儲型
存儲xss存儲在數據庫中。
XSS防范措施
編碼
對用戶輸入的數據進行HTML Entity編碼
過濾
移除用戶上傳的DOM屬性,如onerror等
移除用戶上傳的Style節點、Script節點、iframe或frame節點等,不區分大小寫
對上傳的數據進行客戶端及后台程序的校驗
校正
避免直接對HTML Entity解碼
使用DOM Parse轉換,校正不配對的DOM標簽
--------------------------------------------------------------------------------------------------------------------------------------------
CSRF攻擊原理
CSRF是指請求迫使某個已登錄的瀏覽器(用戶)向攻擊者的Web應用發送一個請求(包含token信息cookie信息等),然后攻擊者以受害者的名義進行操作
CSRF攻擊手段
1、同個瀏覽器打開兩個頁面:一個頁面權限失效后,另一個頁面是否可操作成功
2、使用工具發送請求,在http請求頭中不加入referer字段,檢驗返回消息,是否重新定位到錯誤界面或者登陸界面。
如果還可以返回正常的信息就有可能存在CSRF問題。
CSRF防范措施
1、用戶技巧
用戶退出
多個瀏覽器進行訪問避免共享進程導致session共享
2、添加一些確認的操作
頁面上確認操作
雙因子/多因子認證
3、重新認證,要求用戶重新輸入密碼
4、session時效時間(比如設置為1小時)
5、使用token
服務器端session中增加token值
請求頭中增加token值
進行請求時對比
用戶退出或session失效token移除並銷毀