Spring security csrf实现前端纯html+ajax
spring security集成csrf
进行post等请求时,为了防止csrf攻击,需要获取token才能访问
因此需要添加
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
动态获取token
这样的话,需要使用jsp或模板引擎
但又想使用纯html+ajax.很难受
最近想到了一个办法
通过ajax获取token,后端仍使用jsp或freemarker之类的模板引擎
但前端可实现纯html+ajax,瞬间感觉释放
首先定义一个模板_csrf.ftl或_cscf.jsp等,内容为
<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>
然后写一个URI,返回的视图为_csrf.ftl,以spring mvc为例
@RequestMapping(path = "/jsp/common/_csrf",method = RequestMethod.GET)
public String _csrf(Model model){
return "/jsp/common/_csrf";
}
前端将token使用js append到header中,同时设置ajaxSetup的beforeSend,使其发送请求的时候将token放到请求头、
<script>
$(function () {
function getCsrfToken(){
$.get("${basePath}/jsp/common/_csrf",function(data){
$("head").append(data);
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$.ajaxSetup({
beforeSend: function (xhr) {
if(header && token ){
xhr.setRequestHeader(header, token);
}
}
});
});
}
getCsrfToken()
})
</script>
只要在有post等需要token的请求页面添加上面的代码,即可愉快的写ajax了
最主要的是安全性,不知道这样能不能保证token不被csrf利用
因为其放置token的位置和使用方式和一般的方式是一样的,所以暂且认为是安全的,毕竟请求还是需要token
Spring security csrf实现前端纯html+ajax的更多相关文章
- Cross Site Request Forgery (CSRF)--spring security -转
http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html 13. Cross ...
- Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】
源码请移步至:https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc 版 ...
- SpringBoot集成Spring Security(4)——自定义表单登录
通过前面三篇文章,你应该大致了解了 Spring Security 的流程.你应该发现了,真正的 login 请求是由 Spring Security 帮我们处理的,那么我们如何实现自定义表单登录呢, ...
- Spring Boot与Spring Security整合后post数据不了,403拒绝访问
http://blog.csdn.net/sinat_28454173/article/details/52251004 *************************************** ...
- Spring Security登录超时,angular ajax请求出错自动跳转至登录页(jQuery也适用)
公司开发采用Spring Security+AngualerJS框架,在session过期之后,ajax请求会直接出错.本文介绍如何实现出错情况下自动跳转至登录页. 整体思路是,session过期后, ...
- CSRF 详解:攻击,防御,Spring Security应用等
本文原创,更多内容可以参考: Java 全栈知识体系.如需转载请说明原处. CSRF(Cross-site request forgery跨站请求伪造,也被称成为"one click att ...
- spring boot + spring security +前后端分离【跨域】配置 + ajax的json传输数据
1.前言 网上各个社区的博客参差不齐 ,给初学者很大的困扰 , 我琢磨了一天一夜,到各个社区找资料,然后不断测试,遇到各种坑,一言难尽啊,要么源码只有一部分,要么直接报错... 最后实在不行,直接去看 ...
- spring security:ajax请求的session超时处理
当前端在用ajax请求时,如果没有设置session超时时间并且做跳转到登录界面的处理,那么只是靠后台是很难完成超时的一系列动作的:但是如果后台 没有封装一个ajax请求公共类,那么在ajax请求上下 ...
- Spring Security Ajax 被拦截
背景是项目中使用Spring Security 进行安全控制 再使用Ajax的时候会报 403(ajax get 方式是没问题的 post 的时候会报) Spring Security 原本是 防止 ...
随机推荐
- selenium 相关api操作
driver.close(); //关闭程序 driver.findElement(By.id("idExpression")); //查找单个页面元素 driver.findEl ...
- .NET Core 2.0 开源Office组件 NPOI
前言 去年 12 月,我移植了大家所熟知 NPOI 到 .NET Core 版本,这里是当时发的博客,当时得到了很多同学的支持,社区反应也很好,在这里非常感谢当时推荐的朋友们. 去年的那个版本是针对于 ...
- css3文本字体
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- node.js之模块
node.js之模块 1.自定义模块的设置 加载自定义模块利用require: eg: require('./custom_module.js') 2.从模块外部访问模块内的成员 2.1使用expor ...
- testng-result中文乱码问题
背景 执行完用例查看报告,发现testng-result.xml文件中关于中文的都是乱码 解决方法 eclipse已设置了utf-8去编译,所以直接运行run as testng ,在console栏 ...
- 【Ubuntu 16】安装net-snmp
使用tar.gz压缩包安装mongodb时报错,没有库文件 libnetsnmpmibs.so.3o cannot open file or directory 在网上找了一篇文章 需要安装net-s ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
- Maven详解(六)------ 生命周期
1.什么是 生命周期? Maven 强大的原因是有一个十分完善的生命周期,生命周期可以理解为项目构建步骤的集合,它定义了各个构建环节的执行顺序,有了这个顺序,Maven 就可以自动化的执行构建命令. ...
- python+selenium自动化软件测试(第11章):持续集成jenkins和GitHub的使用
11.1 jenkins持续集成环境 相关安装包下载链接:http://pan.baidu.com/s/1qYhmlg4 密码:dcw2赠送jenkins集成selenium环境视频链接http:// ...
- Groovy Script in SoapUI REST Testing
1. Run special step: testRunner.runTestStepByName("stepName/requestName") get it's respons ...