WEB项目之 Token防止表单重复 anti csrf攻击
2017-04-19 10:23
330 查看
Token的作用
防止表单重复提交防止CSRF攻击
用于签名验证
简单来讲,Token的主要作用就是验证,以上三个其实核心都是验证,相信接触到Token的人,对Token验证都不陌生了,不管是在支付的时候用的Token,还是微信用的,或者是网站请求时候用的,简单说Token(口令,令牌)就是用来验证的。
为什么使用Token
以前做的是一些小项目,也没有谁会来攻击你,也就没有注意到一些问题,今天看见很多大的网站,项目上都使用了Token的验证,也就思考,为什么要用,怎么用Token来实现这些功能。<script type="text/javascript"> window.X_Anti_Forge_Token = ''; window.X_Anti_Forge_Code = ''; </script>
相信很多网站上面都有这个,这个就是用来防止表单重复提交,和防止CSRF攻击的代码片段了。
实现思路与原理
1.防止表单重复提交假如在项目中,没有对表单重复提交进行处理的话,那么当网速出现问题或者其他原因的情况下,就以注册为例,用户多次点击了注册(当然现在有些浏览器,可以识别是否重复提交表单),导致数据库插入数据过多,或者后面的插入不进去,而提示已经注册,容易造成误解,这时就需要对表单重复提交进行处理。
解决思路:
当用户访问视图时,由服务端生成一个Token放入session中,同时这个token跟随返回到视图页面,用js接收或者 hidden 放入要提交的表单中,当提交表单的时候 比较两个Token的值是否一致,再进行数据操作,并且再次改变Token中的值,当表单再次提交时 token中的值不一致,则不会执行相应方法了。当ajax操作的时候,也可以通过json把Token带回页面。
防止csrf攻击
同样的,在对数据库进行 增加删除,修改操作的时候,也可对请求数据进行token验证,如果token一致,则证明该请求不是伪造的,可以对数据库或者其他进行操作。缺点
用session来进行验证,可能会导致服务端的压力过大,但是安全,当然你也可以试着用cookie来进行前端验证,不过大家都知道cookie是不安全的,容易被劫持,然后起不到验证作用,参考:http://blog.csdn.net/sum_rain/article/details/37085771
相关文章推荐
- JavaWeb 如何防止表单重复提交 - 使用Token,令牌
- 【学习笔记】Web开发中防止页面刷新后表单重复提交,表单Token设置示例
- spring boot项目添加拦截器验证token防止表单重复提交
- Struts2标签<s:token />防止表单重复提交
- Web开发设计模式PRG:Post/Redirect/Get,防止重复提交表单
- springmvc中自己实现的token防表单重复提交,防止二次提交
- 防止页面表单重复提交,JSP页面加入 <s:token/> 以及Struts的相关配置详解
- Struts2学习笔记之<s:token/>防止表单重复提交
- 不用struts2的token机制,手动防止表单数据重复提交
- JAVA_WEB之Session防止表单重复提交
- JavaWeb_session_应用_防止注册表单页面的重复提交
- 不用struts2的token机制,手动防止表单数据重复提交
- struts2基础(一) struts2标签<s:token />防止表单重复提交
- Rails项目防止表单重复提交
- PHP简单利用token防止表单重复提交(转)
- struts2 token拦截器防止表单重复提交
- Struts2学习笔记之<s:token/>防止表单重复提交
- 《struts---利用Token防止表单重复提交》
- Struts2学习10--防止表单的重复提交token标签和tokenSession
- struts2_大纲09_token防止表单重复提交