防CSRF攻击:一场由重复提交的问题引发的前端后端测试口水战

重复提交,这是一直以来都会存在的问题,当在网站某个接口调用缓慢的时候就会有可能引起表单重复提交的问题,不论form提交,还是ajax提交都会有这样的问题,最近在某社交app上看到这么一幕,这个团队没有做重复提交的验证,从而导致了数据有很多的重复提交,在这里我们不讨论谁对谁错,问题解决即可。

首先的一种方式,在前端加入loading,或者是blockUI,在ios以及安卓上也是类似,效果如下:

这个时候整个页面不能再用鼠标点击,只能等待请求响应以后才能操作

具体可以参考blockUI这个插件

此外就是后端了,其实后端在一定程度上也要进行防止重复提交的验证,某些无所谓的情况下可以在前端加,某些重要的场景下比如订单等业务就必须再前后端都要做,为了测试方便,blockUI就直接注释

在后台我们线程sleep5秒

多次点击,效果如下

步骤1:页面生成token,每次进入都需要重新生成

设置自定义标签

页面生成

查看redis

拦截器代码:

测试:

这样重复提交的问题就解决了,同时也解决了CSRF攻击的问题,关于什么是CSRF可以自行百度

*注意:

1、token生成也可以在异步调用的时候生成,也就是一次请求一个token,而不是一个页面一个token,但是这样做可能会被第三方获取

2、这里使用了springmvc的拦截器,当然在shiro中也可以自定义过滤器来实现,代码略

本文分享自微信公众号 - BeJavaGod(wxleechenxiang)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小白安全

绕过Edge、Chrome和Safari的内容安全策略

概述 ---- Web应用中有许多基本的安全机制,其中一个是同源(same-origin)策略机制,该机制规定了应用程序代码可以访问的资源范围。同源策略的...

45770
来自专栏java思维导图

【读书笔记】1.2、基于HTTP协议的RPC

1.2.1HTTP协议栈 HTTP协议 Hypertext Transfer Protocol的缩写(超文本传输协议) 属于应用层协议,构建在TCP与IP协议之...

37750
来自专栏网站设计制作、数字营销

做网站知识之域名解析易懂介绍

公司在做网站时,在购买了域名、主机空间、及网站源代码和数据库都做好了之后,如果网站备案通过了,就可以做域名解析,如果解析设置没有问题,10分钟之后网站就可正常打...

23400
来自专栏技术博文

HTTP 长连接和短连接

1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用I...

52280
来自专栏smy

webpack的css压缩不兼容IOS8问题探索

34240
来自专栏北京马哥教育

20个可能你不知道Linux网路工具

如果要在你的系统上监控网络,那么使用命令行工具是非常实用的,并且对于 Linux 用户来说,有着许许多多现成的工具可以使用,如: nethogs, ntopng...

487100
来自专栏自由而无用的灵魂的碎碎念

在windows下通过telnet连接virtualbox下的linux

之前,在virtualbox安装了fedora 13,今天突发奇想,想通过客户机连接里头的虚拟机,或者,通过虚拟机连接客户机。

22150
来自专栏移动开发面面观

计算机网络学习笔记(二)

cookie的本质是服务端在接收客户端请求时,会为用户生成一个id。将id随着响应报文传回客户端。客户端后面的请求,将id带上。服务端就知道请求者的身份了。

9210
来自专栏编程坑太多

『中级篇』集群服务间通信之RoutingMesh(47)

PS:内部负载均衡 当在docker swarm集群模式下创建一个服务时,会自动在服务所属的网络上给服务额外的分配一个虚拟IP,当解析服务名字时就会返回这个虚拟...

15030
来自专栏编程坑太多

『中级篇』集群服务间通信之RoutingMesh(47)

机器进行迁移的时候有一套map<k,v>关系,虚拟ip 和实际的ip 有个对应的关系,

10470

扫码关注云+社区

领取腾讯云代金券