当前位置:懂科普 >

IT科技

> java csrf

java csrf

<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的。

java csrf

假设不存在第一个问题,那是不是真的就不存在问题了呢。其实你在页面改用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,来解决正当的问题,来维护网络安全。

标签: java csrf
  • 文章版权属于文章作者所有,转载请注明 https://dongkepu.com/itkeji/4mrd7e.html