csrf java
- IT科技
- 關注:4.94K次
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
java csrf是什麼,讓我們一起了解一下:
csrf是一種挾制使用者在當前已登入的Web應用程式上執行非本意的操作的攻擊方法。攻擊者誘導受害者進入第三方網站,在第三方網站中,向被攻擊網站傳送跨站請求。
實戰操作:假設bbs系統以HTTP GET請求方式來刪除帖子,攻擊者在惡意網站加入以下HTML程式碼段。
<img src="http://www.mybbs.com/del_forum_posts.do?id=1234"/>
CSRF攻擊者在MW中嵌入上述<img>標籤,一旦使用者訪問該網站將導致帖子被刪除,顯然使用者沒想過要刪除帖子。那有人會問了,既然HTTP GET方式會導致帖子會被刪除,那麼我改用POST方式不就可以了。
為解決上面的問題,bbs程式設計師將刪除帖子的方式改用POST表單提交方式。
<form action="del_forum_posts.do" mehtod="post"> <input name="id" value="1234"/> <input type="submit" value="submit"/></form>
實際上前端頁面改用POST方式還是會存在兩個問題,一是java後端程式設計師如果編寫Servlet或者SpringMVC控制器中時沒有很好地區分出POST與GET請求時,那麼以request.getAttribute()或者request.getParameter()方式獲取客戶單請求引數,那麼還是無法判斷出請求是來自POST還是GET的。
假設不存在第一個問題,那是不是真的就不存在問題了呢。其實你在頁面改用POST請求,那麼攻擊者在惡意頁面中也可以改用POST方式,正所謂以其人之道還治其人之身。如下程式碼示例:
<script language="JavaScript" type="text/javascript"> function autoSubmit() { document.forms['myForm'].submit(); }</script> <body οnlοad="autoSubmit()"> <form id="myForm" name="myForm" action="del_forum_posts.do" mehtod="post"> <input name="id" value="1234"/> </form></body>
顯然,一旦訪問該頁面還是會遭受攻擊,因此改用POST方式來防禦CSRF是治標不治本。
最後,我們要正確使用java csrf,來解決正當的問題,來維護網路安全。
- 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/w65gnk.html