您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: