CSRF攻击和XSS攻击的区别

XSS 跨站脚本攻击

原理

XSS 其实就是所谓的 HTML 注入,攻击者的输入没有经过后台的过滤直接进入到数据库,最终显示给来访的用户。如果攻击者输入一段 js 脚本,就能窃取来访者的敏感信息(比如 Cookie),实现伪装成来访者对网站发送危险请求。

防御

避免 XSS 的方法之一主要是对用户输入的内容进行过滤,比如 PHP 里面的 htmlspecialchars() 函数。

CSRF 跨站请求伪造

XSS 是实现 CSRF 的诸多途径中的一条,但绝对不是唯一的一条。一般习惯上把通过 XSS 来实现的 CSRF 称为 XSRF。

原理

要完成一次CSRF攻击,受害者必须依次完成两个步骤:

  • 登录受信任网站A,并在本地生成Cookie。
  • 在不登出A的情况下,访问危险网站B。

银行网站A,它以GET请求来完成银行转账的操作,如: http://www.mybank.com/Transfer.php?toBankId=11&money=1000

危险网站B,它里面有一段HTML的代码如下:

<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>

首先,你登录了银行网站A,然后访问危险网站B,噢,这时你会发现你的银行账户少了1000块!

防御

给每个表单加入随机 Token 进行验证,这样B页面无法获取A页面的 Token 导致请求验证失败,从而防止了 CSRF。

CSRF攻击是源于WEB的隐式身份验证机制!WEB的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • cookie是什么 首先需要明白的是,cookie是储存在浏览器中的一段字符串,它本身是没有任何危害的,不包含任何...
    sunny519111阅读 6,801评论 1 10
  • http://www.91ri.org/tag/fuzz-bug 通常情况下,有三种方法被广泛用来防御CSRF攻击...
    jdyzm阅读 4,236评论 0 5
  • CSRF是什么? (Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,...
    谢泽阅读 3,246评论 0 8
  • 转载地址:http://www.phpddt.com/reprint/csrf.htmlCSRF概念:CSRF跨站...
    matianhe阅读 991评论 0 104
  • 刚刚我感悟到,所有事情的发生都要以“不当真”去看待。之前遇到事情我总会不自觉的下判断,或评判,对与错好与坏,或如果...
    河边木屋阅读 429评论 0 0