XSS和CSRF

XSS篇:

XSS,(cross site scripting),跨站腳本注入,指攻擊者利用一些技巧向頁面注入腳本代碼并讓其執(zhí)行,從而達(dá)成攻擊效果。

XSS原理

攻擊者利用頁面輸入和輸出的功能,在輸入時使用閉標(biāo)簽再加腳本代碼等技巧,當(dāng)服務(wù)器輸出這些輸入信息到頁面時,就會插入并執(zhí)行腳本代碼。解決方法是可以在服務(wù)端對客戶端的輸入進(jìn)行過濾或轉(zhuǎn)義。注意:這里不一定只用script標(biāo)簽,還可以用img等其他標(biāo)簽,或者用onclick等事件方法達(dá)到執(zhí)行腳本代碼。簡單例子如下:

//Web 請求如下所示:
GET http://www.somesite.com/page.asppageid=10&lang=en&title=Section%20Title
//在發(fā)出請求后,服務(wù)器返回的 HTML 內(nèi)容包括:
<h1>Section Title</h1>
//攻擊者可以通過擺脫 <h1> 標(biāo)記來注入代碼:
http://www.somesite.com/page.asp?pageid=10&lang=en&title=Section%20Title</h1><script>alert(‘XSS%20attack’)</script>
//最終這個請求的 HTML 輸出將為:
<h1>Section Title</h1><script>alert(‘XSS attack’)</script>
XSS危害與防范

攻擊者可以使用 XSS 漏洞搞惡作劇,竊取 Cookie,劫持帳戶,執(zhí)行 ActiveX,執(zhí)行 Flash 內(nèi)容,強(qiáng)迫您下載軟件,官網(wǎng)掛釣魚網(wǎng)站,或者是對硬盤和數(shù)據(jù)采取操作。防范的方法就是服務(wù)端對能被攻擊的輸入進(jìn)行過濾或轉(zhuǎn)義。

CSRF篇

CSRF,(Cross-site request forgery),跨站請求偽造,指通過偽裝來自受信任用戶的請求來進(jìn)行對受信任的網(wǎng)站一些操作。

CSRF原理

攻擊者一般通過XSS使用戶在已經(jīng)授權(quán)的網(wǎng)站中不知不覺發(fā)起某些請求,從而實現(xiàn)自己的目的。XSS是實現(xiàn)CSRF的有效方法,但不是唯一方法。常見的例子有:

//假如一論壇網(wǎng)站的發(fā)貼是通過 GET 請求訪問,點擊發(fā)貼之后 JS 把發(fā)貼內(nèi)容拼接成目標(biāo) URL 并訪問:
http://example.com/bbs/create_post.php?title=標(biāo)題&content=內(nèi)容
//那么,我只需要在論壇中發(fā)一帖,包含一鏈接:
http://example.com/bbs/create_post.php?title=我是腦殘&content=哈哈
//只要有用戶點擊了這個鏈接,那么他們的帳戶就會在不知情的情況下發(fā)布了這一帖子。
CSRF危害與防范

既然發(fā)貼的請求可以偽造,那么刪帖、轉(zhuǎn)帳、改密碼、發(fā)郵件全都可以偽造。CSRF不能絕對的防范,因為他是通過偽造請求來實現(xiàn)的,而請求可以來自各自各樣的方式。我們可以通過提高CSRF的攻擊門檻進(jìn)行適當(dāng)?shù)姆婪叮龇ㄓ校褐匾恼埱髴?yīng)該通過post方式進(jìn)行(杜絕通過點擊鏈接進(jìn)行攻擊)、服務(wù)端生成隨機(jī)token,保存在頁面隱藏域中,在發(fā)出請求的時候一并發(fā)出,服務(wù)端在驗證其在session中的token,兩者一致后才處理請求,處理請求后必須馬上銷毀token。(這種做法可以提高攻擊難度)、防范XSS攻擊(這樣能有效防范CSRF)。

參考文獻(xiàn)

  1. http://www.ruanyifeng.com/notes/2006/12/xss.html (阮一峰XSS)
  2. http://www.cnblogs.com/wangyuyu/p/3388180.html (XSS和CSRF)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容