我记录

防止 CSRF 攻击

掷鸡蛋者 发布于 2015/9/20 21:24 浏览: 933 回复: 0 所在分类:java

跨站点攻击(CSRF),CSRF=Cross Site Request Forgery

参考 spring 官网说明:http://docs.spring.io/spring-security/site/docs/current/reference/html/csrf.html 

1、Server 端部署,防攻击

1)代码并配置

CsrfInterceptor.java

Html.java

然后部署到 spring-servlet.xml 

<bean class="wojilu.web.CsrfInterceptor"/>

3)server 端方法,必须使用 POST 等非 GET 注解

强制客户端使用 POST 方法提交,然后 Interceptor 会对所有非 GET 方法,进行强制性检查

——2个条件缺一不可。

2、客户端使用

在表单中

<div><%= Html.csrfToken(request) %></div>

3、ajax 请求

1)在 header 中统一插入 token

<html>

<head>

    <meta name="_csrf" content="<%= Html.createCsrfToken(request) %>"/>

    <meta name="_csrf_header" content="<%= Html.headerTokenName %>"/>

    <!-- ... -->

</head>

2)然后在所有 ajax 请求中,启用 header token:

$(function () {

var tokenValue = $("meta[name='_csrf']").attr("content");

var tokenName = $("meta[name='_csrf_header']").attr("content");

$(document).ajaxSend(function(e, xhr, options) {

    xhr.setRequestHeader(tokenName, tokenValue);

});

});


掷鸡蛋者2015/9/20 21:24

留下脚印

踩一脚
copyright © 用微博记录这个时代 2010-2014
Powered by 我记录2.0
Processed in 0 seconds, 0 queries