您现在的位置是:首页 > 正文

java拦截csrf攻击,在SpringMVC中使用拦截器(interceptor)拦截CSRF攻击

2023-11-13 08:38:49阅读 217

(1)登录页面:

从上面的代码可知,为了防止CSRF攻击,因此在form表单里添加了一个隐藏字段“_csrf”,其值是生成的一个随机小数

(2)在SpringMVC的配置文件中添加拦截器:

从上面的代码知道,在这个文件中添加了一个 mvc:interceptors 标签,表示一系列的拦截器集合,然后下面定义了对登录时form表单提交地址“/check.html”进行拦截。下面一行的bean属性就是定义了自定义拦截器的类所在的路径

注:后面那个拦截器这里不用管,我在写后面的文章时才会用到

(3)自定义拦截器LoginInterceptor:

这个自定义拦截器的逻辑很简单,就是把form表单隐藏域“_csrf”中的值和session中的“_csrf”值进行比较。如果二者相同,则说明该请求是从前台form表单中传进来的,而不是其他网站的伪造请求(PS:因为这种方式没法向session中定义“_csrf”参数);同时也防止form表单的重复提交(PS:因为第一次验证过后session中的“_csrf”就已经被移除了,除非前台刷新页面才会重新生成),避免了爆破撞库等安全隐患。当然,为了进一步降低安全隐患,这里的form表单还应该添加复杂的动态验证码。我这里是由于为了让示例更简洁,因此就把这一步给省略了

(4)验证:

第一次提交表单,发现可以正常到达后台进行验证

第二次点击浏览器的“返回键”,返回到表单页面之后重复提交,可以发现直接被拦截了。效果如下:

4f63ab39099fcfecc253301096474c35.png

本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1877586,如需转载请自行联系原作者

文章来源:https://blog.csdn.net/weixin_36039452/article/details/116079974
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://www.dflian.com/163477.html

网站文章

  • 语言模型训练第一步

    2.安装cuda(用与GPU训练模型),安装cunna(用于加速训练语言模型),安装pytorch(它是一个模型深度学习的框架,包含很多库和工具包)1.安装anaconda,他是一个环境管理工具,我利...

    2023-11-13 08:38:44
  • HCFT和HCFTstar在OTB数据集中测试的接口函数

    HCFT跟踪算法(Hierarchical Convolutional Features for Visual Tracking)是2015年发表在ICCV上的一篇结合相关滤波和深度特征的跟踪算法,作...

    2023-11-13 08:38:34
  • 【自动化测试】Java+Selenium自动化测试环境搭建

    【自动化测试】Java+Selenium自动化测试环境搭建

    本主要介绍以Java为基础,搭建Selenium自动化测试环境,并且实现代码编写的过程。

    2023-11-13 08:38:26
  • 云片:批量发送超级短信示例

    批量发送超级短信 HTTP 头信息: Accept:application/json;charset=utf-8; Content-Type:application/x-www-form-urlenc...

    2023-11-13 08:38:14
  • spring boot 使用 PageHelper分页插件总结

    spring boot 使用 PageHelper分页插件总结

    【代码】spring boot 使用 PageHelper分页插件总结。

    2023-11-13 08:37:55
  • 一个易用的消息订阅发布系统-Pubsub.js

    一个易用的消息订阅发布系统-Pubsub.js

    本文作者系360奇舞团前端开发工程师简介随着软件架构越来越复杂,如何有效地解决各个模块之间的通信问题变得尤为重要。一种常见的解决方案就是采用消息订阅发布机制。在这种模式下,每个模块只需要关注自己要发送...

    2023-11-13 08:37:51
  • 重建二叉树方式和思路

    一:重建二叉树首先明确前序遍历,中序遍历,后序遍历的遍历方式前序遍历:根节点 ,左子树,右子树中序遍历:左子树,根节点 ,右子树后序遍历:左子树,右子树,根节点二:还原思路例:前:1 2 4 7 3 ...

    2023-11-13 08:37:47
  • 使用JDBC连接数据库的简单操作和查询测试

    使用JDBC连接数据库的简单操作和查询测试

    jdbc.properties文件driverClass=com.mysql.jdbc.Driverurl=jdbc:mysql:///testuser=rootpassword=rootJdbcUt...

    2023-11-13 08:37:40
  • Android中WebView使用详解及注意事项

    Android中WebView使用详解及注意事项

    Webview使用详解webView作为Android中的一个控件,对于它真的是想说爱你不容易。网上找了一篇写的比较详细的文章,故转载过来了供参考,点击查看原文。前言现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么如何去实现这个呢?下面本文将介绍WebView的常用用法。目录1、简介WebView

    2023-11-13 08:37:22
  • YMAL语法

    1、基本语法使用 k:(空格) v(键值对)来声明参数和赋值,键和值中间的空格必须有,YAML语法以空格的缩进来控制层级关系,只要是左对齐的一列数据都是同一个层级的,注意属性和值也是大小写敏感;ser...

    2023-11-13 08:37:18