Web前端之路Web 前端开发

CSRF攻击和XSS攻击的区别

2017-04-21  本文已影响1194人  初七123

XSS 跨站脚本攻击

原理

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

防御

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

CSRF 跨站请求伪造

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

原理

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

银行网站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的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的!

上一篇下一篇

猜你喜欢

热点阅读