CSRF漏洞分析利用及防御
0x00 简要介绍
为掇刀等地区用户提供了全套网页设计制作服务,及掇刀网站建设行业解决方案。主营业务为成都做网站、成都网站设计、掇刀网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无 token/refer 限制,导致***者可以以用户的身份完成操作达到各种目的。根据HTTP请求方式,CSRF利用方式可分为两种
0x01 GET类型的CSRF
这种类型的CSRF一般是由于程序员安全意思不强造成的。GET类型的CSRF利用非常简单,只需要构造一个HTTP请求,
一般会这样利用:
当目标加载这个图片时会自动加载链接,这时就能完成***了。
例如:在一个留言或博客论坛的环境中,当留言内容没有经过过滤时,可以按照上面的方法构造一个删除该文章的图片链接。当目标查看博客留言时,因为是图片标签,所以浏览器会自动加载该URL这时,目标处于登录状态,那么该文章就会被删除。这种就是CSRF-GET请求的一种利用。
0x02 POST类型的CSRF
所谓POST类型就是构造一个自动提交的表单,当目标点击给标签时,就会以POST的方式发送一次HTTP请求。
test csrf
以上内容就是一个可以自动提交的表单,当用户触发时,发送一次HTTP请求,修改个人信息。
0x03 如何修复
针对CSRF的防范:
关键的操作只接受POST请求,并且添加验证码。
CSRF***的工程,往往是用户在不知情的情况下触发的,当添加验证码或确认操作时,就可以简单而有效防御CSRF了。
检测refer
常见的互联网页面与页面之间是存在联系的,比如你在www.baidu.com应该是找不到通往www.google.com的链接的,再比如你在 论坛留言,那么不管你留言后重定向到哪里去了,之前的那个网址一定会包含留言的输入框,这个之前的网址就会保留在新页面头文件的Referer中
通过检查Referer的值,我们就可以判断这个请求是合法的还是非法的,但是问题出在服务器不是任何时候都能接受到Referer的值,所以Refere Check 一般用于监控CSRF***的发生,而不用来抵御***。
Token
目前主流的做法是使用Token抵御CSRF***。下面通过分析CSRF ***来理解为什么Token能够有效
CSRF***要成功的条件在于***者能够预测所有的参数从而构造出合法的请求。所以根据不可预测性原则,我们可以对参数进行加密从而防止CSRF***。
另一个更通用的做法是保持原有参数不变,另外添加一个参数Token,其值是随机的。这样***者因为不知道Token而无法构造出合法的请求进行***。
Token 使用原则
Token要足够随机————只有这样才算不可预测 Token是一次性的,即每次请求成功后要更新Token————这样可以增加***难度,增加预测难度 Token要注意保密性————敏感操作使用post,防止Token出现在URL中 ---参照学习与乌云drops
网站名称:CSRF漏洞分析利用及防御
URL链接:http://scyanting.com/article/jigcjd.html