CSRF攻击与XSS攻击

Posted 家有大娴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSRF攻击与XSS攻击相关的知识,希望对你有一定的参考价值。

CSRF


CSRF(Cross-site request forgery)跨站请求伪造


CSRF的攻击原理

用户是网站A的注册用户,且登录进去,于是网站A就给用户下发cookie。

CSRF攻击必须满足两个条件:

  • 登录受信任网站A,并在本地生成Cookie

  • 在不登出A的情况下,访问危险网站B

注意:cookie保证了用户可以处于登录状态,但网站B其实拿不到 cookie。


CSRF如何防御

  • Token验证

  • 隐藏Token:把token隐藏在http的head头中。和方法一有点像,只是使用方式上有区别。

  • Referer验证:Referer指的是页面请求来源。只接受本站的请求,服务器才做响应。如果不是,就拦截。


XSS


XSS(Cross Site Scripting):跨域脚本攻击


XSS的攻击原理

不需要你做任何的登录认证,它会通过合法的操作(比如在url中输入、在评论框中输入), 向你的页面注入脚本(可能是js、hmtl代码块等)。


最后导致的结果可能是:

盗用Cookie破坏页面的正常结构,插入广告等恶意内容D-doss攻击。


XSS的攻击方式

  • 反射型

发出请求时,XSS代码出现在url中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,所以叫反射型XSS。
  • 存储型

存储型XSS和反射型XSS的差别在于,提交的代码会存储在服务器端(数据库、内存、文件系统等),下次请求时目标页面时不用再提交XSS代码。


XSS的防范措施主要有三个:

  • 编码

对用户输入的数据进行 html Entity 编码。
  • 过滤

移除用户输入的和事件相关的属性。如onerror可以自动触发攻击,还有onclick等。(总而言是,过滤掉一些不安全的内容)移除用户输入的Style节点、Script节点、Iframe节点。(尤其是Script节点,它可是支持跨域的呀,一定要移除)。
  • 校正

避免直接对HTML Entity进行解码。使用DOM Parse转换,校正不配对的DOM标签。

DOM Parse

这个概念,它的作用是把文本解析成DOM结构。
比较常用的做法是,通过第一步的编码转成文本,然后第三步转成DOM对象,然后经过第二步的过滤。


CSRF 和 XSS 的区别

  1. CSRF:需要用户先登录网站A,获取 cookie。XSS:不需要登录

  2. CSRF:是利用网站A本身的漏洞,去请求网站A的api。XSS:是向网站 A 注入 JS代码,然后执行 JS 里的代码,篡改网站A的内容

以上是关于CSRF攻击与XSS攻击的主要内容,如果未能解决你的问题,请参考以下文章

技术干货 | XSS攻击与CSRF攻击的定义及区别

浏览器常见攻击方式(XSS和CSRF)

XSS CSRF 攻击

前端技能树,面试复习第 36 天—— 浏览器原理:如何预防 XSS 攻击与 CSRF 攻击

csrf攻击与csrf防御

XSS 与 CSRF 两种跨站攻击