xss攻击和csrf/xsrf攻击

2019-03-12  本文已影响0人  广告位招租

xss攻击

XSS(Cross Site Scripting), 跨站脚本攻击,是发生在目标用户的浏览器层面上,当渲染DOM树时发生了不在预期范围内的js代码执行时,可以被判定为发生了xss攻击

xss攻击的类别

  1. 反射型xss

非持久型XSS,是指发生请求时,XSS代码出现在请求URL中,作为参数提交到服务器,服务器解析并响应。响应结果中包含XSS代码,最后浏览器解析并执行。
简单的案例是,某网站有一个input框,输入内容后,将会在内面上呈现输入的内容,如果这里不对返回的数据进行解码和过滤等操作的话,如果我们在input中输入一段具有攻击性的代码片段

<img src="null" onerror='alert(document.cookie)' />

页面将会弹出当前本地部分的cookie信息

类似案例这样的,被称作反射型xss攻击

  1. 存储型 XSS

存储型XSS,也叫持久型XSS,主要是将XSS代码发送到服务器(不管是数据库、内存还是文件系统等。),然后在下次请求页面的时候就不用带上XSS代码了。
这里典型的案例就是留言板,用户提交了一条包含xss代码的留言到数据库,当目标用户查询留言时,留言的内容就会从服务器解析之后加载,浏览器将xss代码做html和js进行解析,发生了xss攻击

  1. DOM XSS

DOM XSS攻击不同于反射型XSS和存储型XSS,DOM XSS代码不需要服务器端的解析响应的直接参与,而是通过浏览器端的DOM解析。这完全是客户端的事情。
DOM XSS代码的攻击发生的可能在于我们编写JS代码造成的。我们知道eval语句有一个作用是将一段字符串转换为真正的JS语句,因此在JS中使用eval是很危险的事情,容易造成XSS攻击。避免使用eval语句。

test.addEventListener('click', function () {
  var node = window.eval(txt.value)
  window.alert(node)
}, false)

// txt中的代码如下
<img src='null' onerror='alert(123)' />

xss的防御

  1. 对用户输入的内容进行解析和过滤或编码

过滤有危险DOM节点,如script,img, link, style, iframe等等

  1. 对cookie做保护,设置httpOnly,防止客户端通过document.cookie读取cookie

csrf/xsrf攻击

CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。攻击者将会盗用你的身份,以你的名义发送恶意请求

产生csrf攻击需要有两个步骤

  1. 登陆受信网站A,并且在本地生产对应的cookie
  2. 在不登出A的情况下,访问危险网站B

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

csrf攻击的防御

  1. 尽量少使用get请求
  2. 使用验证码
  3. Referer Check
  4. 使用token
上一篇下一篇

猜你喜欢

热点阅读