资讯专栏INFORMATION COLUMN

CSRF攻击原理及预防手段

jackwang / 553人阅读

摘要:全程跨站域请求伪造这种攻击方式相对于注入等攻击方式比较晚被发现今天就来讲解下这种攻击方式以及避免方式攻击过程假设用户登录银行的网站进行操作同时也访问了攻击者预先设置好的网站点击了攻击者网站的某一个链接这个链接是指向银行银行服务器会根据这个链

CSRF全程 Cross Site Request Forgery, 跨站域请求伪造.这种攻击方式相对于XSS,SQL注入等攻击方式比较晚被发现,今天就来讲解下这种攻击方式以及避免方式.

攻击过程

假设abc用户登录银行的网站进行操作, 同时也访问了攻击者预先设置好的网站.

abc点击了攻击者网站的某一个链接,这个链接是http://www.bank.com/xxxx指向银行,银行服务器会根据这个链接携带的参数会进行转账操作.

银行服务器在执行转账操作之前会进行SESSION验证是否登录, 但是由于abc已经登录了银行网站,攻击者的链接也是www.bank.com.所以攻击的链接就会携带session id到银行服务器.

由于session id是正确的,所以银行会判断操作是由本人发起的,执行转账操作.

演示

根据上面的说明,我们来模拟一下攻击的过程.

www.bank.comwww.hacker.com.用户abc登录www.bank.com网站之后点击了www.hacker.com的点击抽大奖的诱骗链接

此链接会向www.bank.com发起一个post请求.由于请求域名为www.bank.com,所以请求会携带www.bank.com的session id.

www.hacker.com的代码




    
    Title


可以发现,www.hacker.com的网页中包含了一个向www.bank.com发起的post请求.并且表单都没隐藏了,只有一个诱骗用户点击的按钮.

完整的实例代码可以在github上找到.传送门.

预防

从上面的例子 可以看到csrf攻击.黑客不能拿到cookie,也没办法对服务器返回的内容进行解析.唯一能做的就是给服务器发送请求.通过发送请求改变服务器中的数据.上面的例子中攻击者诱导用户点击链接进行转账操作,使得银行数据库中受害者的金额发生了改变.

了解了csrf攻击的原理和目标,提出了两种防御手段

referer 验证

根据HTTP协议,在http请求头中包含一个referer的字段,这个字段记录了该http请求的原地址.通常情况下,执行转账操作的post请求www.bank.com/transfer.php应该是点击www.bank.com网页的按钮来触发的操作,这个时候转账请求的referer应该是www.bank.com.而如果黑客要进行csrf攻击,只能在自己的网站www.hacker.com上伪造请求.伪造请求的referer是www.hacker.com.所以我们通过对比post请求的referer是不是www.bank.com就可以判断请求是否合法.

这种方式验证比较简单,网站开发者只要在post请求之前检查referer就可以,但是由于referer是由浏览器提供的.虽然http协议有要求不能篡改referer的值.但是一个网站的安全性绝对不能交由其他人员来保证.

token 验证

从上面的样式可以发现,攻击者伪造了转账的表单,那么网站可以在表单中加入了一个随机的token来验证.token随着其他请求数据一起被提交到服务器.服务器通过验证token的值来判断post请求是否合法.由于攻击者没有办法获取到页面信息,所以它没有办法知道token的值.那么伪造的表单中就没有该token值.服务器就可以判断出这个请求是伪造的.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22235.html

相关文章

  • 《网络黑白》一书所抄袭的文章列表

    摘要:网络黑白一书所抄袭的文章列表这本书实在是垃圾,一是因为它的互联网上的文章拼凑而成的,二是因为拼凑水平太差,连表述都一模一样,还抄得前言不搭后语,三是因为内容全都是大量的科普,不涉及技术也没有干货。 《网络黑白》一书所抄袭的文章列表 这本书实在是垃圾,一是因为它的互联网上的文章拼凑而成的,二是因为拼凑水平太差,连表述都一模一样,还抄得前言不搭后语,三是因为内容全都是大量的科普,不涉及技术...

    zlyBear 评论0 收藏0
  • 前端培训-初级阶段 - xss相关(2019-04-18)

    摘要:前端最基础的就是。但是如果是盗窃,异常提交请求,这些就属于危险操作。可以用来伪装成其他用户操作,有可能就会造成财产上的损失。劫持有的时候运营商的劫持还是没办法。 前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦...

    VioletJack 评论0 收藏0
  • web 安全入门

    摘要:搞开发离不开安全这个话题,确保网站或者网页应用的安全性,是每个开发人员都应该了解的事。阿里巴巴的安全团队在实战中发现,防御产品的核心是检测技术和清洗技术。表示转账的目标账户,表示转账数目。 搞 Web 开发离不开安全这个话题,确保网站或者网页应用的安全性,是每个开发人员都应该了解的事。本篇主要简单介绍在 Web 领域几种常见的攻击手段。 1. Cross Site Script(XSS...

    MycLambert 评论0 收藏0
  • web 应用常见安全漏洞一览

    摘要:应用常见安全漏洞一览注入注入就是通过给应用接口传入一些特殊字符,达到欺骗服务器执行恶意的命令。此外,适当的权限控制不曝露必要的安全信息和日志也有助于预防注入漏洞。 web 应用常见安全漏洞一览 1. SQL 注入 SQL 注入就是通过给 web 应用接口传入一些特殊字符,达到欺骗服务器执行恶意的 SQL 命令。 SQL 注入漏洞属于后端的范畴,但前端也可做体验上的优化。 原因 当使用外...

    darkerXi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<