java审计-CSRF跨站请求伪造

基础

  • CSRF的全名为Cross-site request forgery,它的中文名为 跨站请求伪造。CSRF是一种夹持用户在已经登陆的web应用程序上执行非本意的操作的攻击方式。

  • CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…造成的问题包括:个人隐私泄露以及财产安全。

    java审计-CSRF跨站请求伪造_第1张图片

例子

  • 不提交csrf_token验证上面防护。这csrf_token字段就是用来表单提交,POST请求验证的csrf_token,后端生成的,提交后会和后端校验。

    <div>
    	<!--Spring 3.2+Thymeleaf 2.1+可以通过这条语句自动生成一个csrf_token来验证-->
    	<form name="f" action="/csrf/post"method="post">
    		<input type="text" name="input" />
    		<input type="submit" value="Submit" />
    		<input type="hidden"th:name="${_csrf.parameterName}"th:value="${_csrf.token}" /><!--使用spring中内置token-->
    	</form>
    </div>
    

解决

  • 在表单里隐藏一个随机变化的 csrf_token提交到后台进行验证,如果验证通过则可以继续执行操作。这种情况有效的主要原因是网站 B 拿不到网站 A 表单里的 csrf_token。
    • 这种方式的使用条件是PHP和JSP等。因为cookie已经不安全了,因此把csrf_token值存储在session中,然后每次表单提交时都从session取出来放到form表单的隐藏域中,这样B网站不可以得到这个存储到session中的值。

你可能感兴趣的:(java,csrf,代码复审,系统安全)