Web安全教程之CSRF(跨站点请求伪造)

所属分类: 网络安全 / 黑客教程 阅读数: 108
收藏 0 赞 0 分享

前言

我们在前端面试过程中遇到的另一个最多的问题就是web安全了,这次我们来聊聊CSRF攻击。CSRF是一种常见的攻击,但是也是web安全中最容易被忽略的一种攻击方式。下面话不多说了,来一起看看详细的介绍吧。

什么是CSRF(跨站点请求伪造)

根据字面意思,大概能猜到,CSRF攻击就是攻击者伪造了用户的请求,在用户不知道的情况下,以用户的名义向服务器发送恶意请求。常见的场景是,用户首先登陆一个正常(下面称为被攻击网站)的网站,攻击者诱使用户在不关闭被攻击网站的同时打开攻击者的页面,这时攻击者就可以以用户的名义给被攻击网站发送恶意请求了。可以看出CSRF是有条件的,首先用户要登陆被攻击网站,并生成Cookie,然后在不登出被攻击网站的同时,访问攻击网站。这两个条件缺一不可。

CSRF进阶

浏览器Cookie策略

CSRF之所以能成功,主要还是因为用户的浏览器成功发送了Cookie的缘故。浏览器所持有的Cookie分为两种:一种是“Session Cookie”,又叫“临时Cookie”;另一种是“Third-party Cookie”,也称为“本地Cookie”。
 

Third-party Cookie,服务器在Set-Cookie时指定了Expire时间,只有到了Expire时间后Cookie才会失效,而Session Cookie则没有指定Expire时间,浏览器关闭后就失效了。如果浏览器从一个域的页面中,要加载另一个域的资源,由于安全原因,某些浏览器会阻止Third-party Cookie的发送。由于新打开的页面和原来的页面在同一个浏览器进程中,所以Session Cookie将会被发送。

IE浏览器处于安全考虑是禁止浏览器在<img>、<iframe>、<script>、<link>等标签中发送第三方Cookie的。当前的主流浏览器中,默认会拦截Third-party Cookie的有:IE6~8、Safari,不会拦截的有:Firefox、Opera、Chrome等。

只有GET请求么?

在CSRF攻击流行之初,有一种错误的观点认为CSRF攻击只能由GET发起,这种错误观点的形成原因是大多数CSRF攻击发起时,使用的HTML标签都是<img>、<iframe>、<script>等带src属性的标签,这列标签只能够发起一次GET请求,而不能发起POST请求。然而,对于攻击者来说,有若干种方法可以构造出一个POST请求。最简单的方法就是在一个页面中构造好一个form表单,然后使用javascript自动提交这个表单。

<form action="http://www.a.com/register" id="register" method="post" accept-charset="utf-8">
    <input type="text" name="username" value=""/>
    <input type="password" name="password" value=""/>
    <input type="submit" name="submit" value="submit"/>
</form>
<script>
    var f = document.getElementById("register");
    f.inputs[0].value = "test";
    f.inputs[1].value = "passwd";
    f.submit();
</script>

CSRF防御

验证码

验证码是对抗CSRF攻击最简单有效地防御方法。CSRF攻击往往是在用户不知情的情况下构造了网络请求。而验证码则强制用户必须与应用进行交互,才能完成最终请求。
但是验证码并不是万能的,我们不可能给页面的所有操作都加上验证码。

Referer Check

Referer Check在互联网中最常见的应用就是“防止图片盗链”。同理,Referer Check也可以被用于检查请求是否来自合法的源。

Anti CSRF Token

CSRF攻击存在的本质原因还是网页中重要操作的所有参数都是可以被攻击者猜测到的。攻击者只有预测出url所有参数与参数值,才能成功地构造一个伪造的请求。所以我们可以通过把参数加密,或者使用一些随机数,从而让攻击者无法猜测到参数值。
 

我们可以给请求新增加一个token,这个token值是随机的。

http://host/path/delete?username=abc&item=123&token=[random(seed)]

由于token的存在,攻击者就无法再构造出一个完整的url来实施CSRF攻击了。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

更多精彩内容其他人还在看

百度Hi Csrf蠕虫攻击

漏洞起因:百度是国内最大的中文搜索引擎。同时百度也提供了百度空间、百度贴吧等BLOG社区服务,拥有海量的用户群,号称全球最大中文社区。80sec发现过百度产品一系列的安全漏洞,其中一些问题得到了有效的修补,但是百度的产品仍然存在很多严重的安全漏洞,利用这些漏洞
收藏 0 赞 0 分享

ACCESS高级注入教程

现在我们在脚本注入攻击的技术中,常用的手法分好多种,最普通的是利用子查询或者是Union联合查询来取得一些特殊表中的内容,比如Admin,Log表等等,这是一种纯粹的对数据库的攻击方式,而MSSQL Server的方法则更为多样和复杂
收藏 0 赞 0 分享

最经典的黑客入门教程(安全必备技能)

无论那类黑客,他们最初的学习内容都将是本部分所涉及的内容,而且掌握的基本技能也都是一样的。即便日后他们各自走上了不同的道路,但是所做的事情也差不多,只不过出发点和目的不一样而已
收藏 0 赞 0 分享

qq号被盗了怎么办 如何找回被盗的QQ号码

这篇文章主要为大家分享一下当qq被盗时的找回密码的方法需要的朋友可以参考一下,尽量到官方网站操作
收藏 0 赞 0 分享

盘点2016上半年十大APT神秘黑客组织

众所周知,近几年来。世界各大组织都曾遭到APT的神秘攻击,其无孔不入,几乎所有的行业都受到了威胁,下面小编就为大家盘点2016上半年十大APT神秘黑客组织
收藏 0 赞 0 分享

不容小觑的十大互联网恶意软件

这篇文章主要为大家详细介绍了互联网十大恶意软件威胁,十大恶意软件有哪些,每一个恶意软件的特点,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

如何将共享文件设置为允许读取共享文件禁止复制共享文件、允许打开共享文件而禁止拷贝

这篇文章主要为大家详细介绍了如何将共享文件设置为允许读取共享文件禁止复制共享文件、允许打开共享文件而禁止拷贝共享文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

大势至电脑文件防泄密系统如何设置网页黑白名单、禁止电脑访问某些网站

这篇文章主要介绍了大势至电脑文件防泄密系统如何设置网页黑白名单、禁止电脑访问某些网站,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

如何禁止电脑安装随身WIFI泄露保密文档、禁用无线路由、禁用随身wifi

这篇文章主要介绍了如何禁止电脑安装随身WIFI泄露保密文档、禁用无线路由、禁用随身wifi的相关资料,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

禁止企业商业机密外泄、商业数据如何防复制、保密数据如何防泄漏

企业的商业秘密,作为一种在专利、商标、著作权之外的一项重要的知识产权,是企业得以生存发展的根基。这篇文章给大家介绍了如何禁止企业商业机密外泄、商业数据如何防复制、保密数据如何防泄漏,需要的朋友参考下本文吧
收藏 0 赞 0 分享
查看更多