XSS:Cross Site Scripting,跨站腳本攻擊
原理:
網(wǎng)站webA的授信用戶userA恨旱,利用網(wǎng)站合法接口輸入或提交非法數(shù)據(jù)痕慢,而影響網(wǎng)站其他用戶冈在。
比如網(wǎng)站webA有允許用戶評論的入口,正常用戶發(fā)布的評論可能是“我是評論站玄!”枚驻,而userA發(fā)的評論是“<a >點我進(jìn)入大保健</a>”。
網(wǎng)頁顯示評論的代碼可能是這樣的"<p>用戶的評論</p>"株旷,網(wǎng)頁在加載userA的評論時就會是“<p><a >點我進(jìn)入大保健</a></p>”再登,相當(dāng)于在評論中插入了一個非法鏈接,網(wǎng)站其他用戶加載評論時都將看到這個非法鏈接晾剖。
除了插入非法鏈接之外锉矢,userA甚至還可以插入script腳本,腳本可做的事情就更多了齿尽,修改dom沽损、自動跳轉(zhuǎn)頁面、非法提交表單等等循头。
預(yù)防:
要預(yù)防跨站腳本攻擊其實比較簡單绵估,就是不信任任何用戶的輸入,對用戶輸入進(jìn)行過濾轉(zhuǎn)義等卡骂。
比如對上面例子中的“<a >點我進(jìn)入大保健</a>”進(jìn)行轉(zhuǎn)義之后就變成了“<a >點我進(jìn)入大保健</a>”国裳,這樣其他用戶看到的就不再是一個跳轉(zhuǎn)鏈接了。
CSRF:Cross Site Request Forgery, 跨站域請求偽造
原理:
通過偽裝來自受信任用戶的請求來利用受信任的網(wǎng)站全跨。
通俗的說就是攻擊者利用了你的身份缝左,發(fā)送了惡意請求。就好比黑客盜用了你的qq然后假裝是你浓若,騙你朋友要錢盒使。
如上圖所示,用戶先登錄網(wǎng)站A七嫌,然后訪問惡意站點B,用戶在惡意站點B中點擊了一個鏈接苞慢,這個鏈接跳轉(zhuǎn)回A網(wǎng)站的同時發(fā)送了一個惡意get請求诵原,類似“http://weba.com/comment?comment=這個評論是webB偽造的”。除了get請求外,webB也可以偽造post請求绍赛。
預(yù)防:
驗證Referer
webB偽造webA的請求時蔓纠,Referer是webB,webA發(fā)現(xiàn)referer非法的時候就可以拒絕這個請求吗蚌。
token校驗
比如用戶在訪問webA時腿倚,會生成一個隨機的token,以后每次訪問webA時都帶上token蚯妇,服務(wù)端校驗token是否合法敷燎。因為token具有隨機性,所以webB就不能用普適的方法來偽造webA的請求箩言。
token有各種實現(xiàn)方式硬贯,可以放在請求參數(shù)中也可以放在請求頭中。