界面安全性系列1-CSRF攻击
2016-04-05 12:45
232 查看
一.CSRF是什么?
CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。
二.CSRF可以做什么?
你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。
[b]三. CSRF攻击模式图[/b]
其实就是在浏览器存了a的凭证,认为通过该客户端过来的访问通过了认证,而B可能是web 可能就是个邮件里面的恶意链接,只要用户访问了,即可以盗用a的凭证干坏事。
[b]四. CSRF防范[/b]
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框的值。
CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。
二.CSRF可以做什么?
你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。
[b]三. CSRF攻击模式图[/b]
其实就是在浏览器存了a的凭证,认为通过该客户端过来的访问通过了认证,而B可能是web 可能就是个邮件里面的恶意链接,只要用户访问了,即可以盗用a的凭证干坏事。
[b]四. CSRF防范[/b]
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框的值。
相关文章推荐
- istream, outstream使用及常见错误
- Style Resource
- appium Explicit Waits
- iis启动网站提示 文件正在使用
- bzoj:2428: [HAOI2006]均分数据 模拟退火
- 数据库行转列及逗号分隔转行
- 女博士嫁农村十年:代际贫穷轮回 看不到前景
- matlab 扩大虚拟内存
- mac下忘记mysql密码, 重新设置mysql密码
- 排序后数组中相邻两数的最大值
- python os.path模块常用方法详解
- github不小心同步覆盖了本地文件
- String Resources
- Menu Resource
- 使用Gnupg对Linux系统中的文件进行加密
- lintcode-medium-Route Between Two Nodes in Graph
- VTK6.3.0升级到VTK7.0.0要做的事情
- 由浅入深学Java Socket
- 【杭电oj】2073 - 无限的路(打表)
- Layout Resource