XSS 和 CSRF
阿新 • • 發佈:2018-12-19
感謝《碼農翻身》的文章讓我深刻記住這兩種攻擊方式。
2、 《黑客三兄弟》
下面是我的整理內容:
目錄
矛與盾教量:
矛:利用js獲取其他網站的cookie
盾:JS 同源策略 {protocol, host, port}
所謂的 同源 是指域名、協議、埠號 相同。不同的客戶端指令碼(javascript,ActionScript)在沒有授權的情況下,不能讀取對方資源。簡單來說,瀏覽器允許包含在頁面A的指令碼訪問第二個頁面B的資料資源,這一切是建立在A和B頁面是同源的基礎上。
- html 嵌入式也是同源(<img> <script>)
- 一級域名相同(www.shanjun.wang與code.shanjun.wang 同源)
不過cookie的domain一定要設定為那個一級域名才可以,例如:”
document.cookie = 'test=true;path=/;domain=store.com'
- AJAX 白名單 跨域請求 需要服務端配合
// 指定允許其他域名訪問
response.setHeader("Access-Control-Allow-Origin", "*");
矛:JS 注入
例如: 在文字輸入框中注入js (儲存型XSS)
盾:cookie 新增 HttpOnly 屬性 禁止js 讀取
response.setHeader(
"Set-Cookie"
, "cookiename=value;
Path=/;Domain=domainvalue;Max-Age=seconds;HTTPOnly");
矛:JS 假造登入框 獲取賬號密碼(登入頁面咋注入js呢?)
盾:過濾,轉義
- 對輸入內容過濾 將特定字元去掉 :給Servlet加Filter。
- 對輸出內容編碼轉義
矛:跨站請求偽造CSRF
假網站偽造一個真網站的請求。在假網站做一個圖片連結,不用使用者點選自動請求轉賬連結
盾: from 請求加入隨機數(token)
(現在Gmail支援多個tab同時持有多個SessionID) 後臺對引數進行校驗,實際操作看這個:SpringMVC如何防禦CSRF
有時間我會做一個模擬實驗。有時間。。。。。。