安全掃描問題——csrf跨站點請求僞造

CSRF是什麼?html

CSRF(Cross Site Request Forgery),中文是跨站點請求僞造。CSRF攻擊者在用戶已經登陸目標網站以後,誘使用戶訪問一個攻擊頁面,利用目標網站對用戶的信任,以用戶身份在攻擊頁面對目標網站發起僞造用戶操做的請求,達到攻擊目的。前端

開發實例瀏覽器

修改系統中遺留信息cookie

修改路徑:http://xxx.xxx.xxx/member/editReservedInformation.jhtmlsession

參數:reservedInformation:'123'post

csrf攻擊示例:網站

test.html.net

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

<h1>我是網站B</h1>

<form method="post" action="http://xxx.xxx.xxx/member/member/member/editReservedInformation.jhtml">
<input type="text" name="reservedInformation" value="999999">
<input type="submit" value="修改">
</form>
</body>
</html>3d

 

在攻擊者獲取到cookie時,經過test頁面可用直接修改遺留信息orm

 

解決方案

1. 用戶訪問某個表單頁面。

2. 服務端生成一個Token,放在用戶的Session中,或者瀏覽器的Cookie中。

3. 在頁面表單附帶上Token參數。

4. 用戶提交請求後, 服務端驗證表單中的Token是否與用戶Session(或Cookies)中的Token一致,一致爲合法請求,不是則非法請求。

這個Token的值必須是隨機的,不可預測的。因爲Token的存在,攻擊者沒法再構造一個帶有合法Token的請求實施CSRF攻擊。另外使用Token時應注意Token的保密性,儘可能把敏感操做由GET改成POST,以form或AJAX形式提交,避免Token泄露。

注意:

CSRF的Token僅僅用於對抗CSRF攻擊。當網站同時存在XSS漏洞時候,那這個方案也是空談。因此XSS帶來的問題,應該使用XSS的防護方案予以解決。

 

具體實現代碼:

1.生產隨機token值,並存入session

 

 2.將token傳給前端

 

 3.修改信息時驗證token

 

 

相關文章
相關標籤/搜索