界面安全性系列1-CSRF攻击

来源:互联网 发布:python 元组 列表 集合 编辑:程序博客网 时间:2024/05/11 22:29

一.CSRF是什么?

  CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。

二.CSRF可以做什么?

  你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

三. CSRF攻击模式图

其实就是在浏览器存了a的凭证,认为通过该客户端过来的访问通过了认证,而B可能是web 可能就是个邮件里面的恶意链接,只要用户访问了,即可以盗用a的凭证干坏事。


四. CSRF防范

1. 服务端csrf token

在服务器端输出页面时候增加一个随机key value的token值,这样所有a网站的页面等于有一个随机参数,这样在a网站提交的所有请求中都要去验证这个参数的正确性。这样B就无法获取到这个随机值,而验证失败,任何提交访问都会返回错误

2. cookie值的md5

这个和1类似,将当前站点cookie,生成的md5传到后台进行验证。这样B无法跨站获取到A的cookie,无法构造出该参数。

3. 验证码

这个就是在任意表单提交都增加验证码功能。B当然就不行了。


总结,当然我推荐1这个方式,而且我们目前网站使用的phalcon框架自带了security csrf token的一系列函数,直接使用方式一

<input id="token" type="hidden" name="<?php echo $this->security->getTokenKey()?>"
               value="<?php echo $this->security->getToken() ?>" />

POST后只需要$this->security->checkToken() 验证这个函数成功即可。

使用ajax也可以带上这个id为token的input框的值。






0 0
原创粉丝点击