1. 程式人生 > >XSS 和 CSRF

XSS 和 CSRF

感謝《碼農翻身》的文章讓我深刻記住這兩種攻擊方式。

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

       有時間我會做一個模擬實驗。有時間。。。。。。