xss攻击和csrf/xsrf攻击

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

推荐阅读更多精彩内容

  • 在 Web 安全领域中,XSS 和 CSRF 是最常见的攻击方式。本文将会简单介绍 XSS 和 CSRF 的攻防问...
    Hoistthecolors阅读 2,900评论 0 0
  • 作者:dwqshttps://github.com/dwqs/blog/issues/68 在 Web 安全领域中...
    grain先森阅读 3,207评论 0 2
  • CSRF CSRF,全称Cross-site request forgery(跨站请求伪造),其原理是利用用户的身...
    喵帕斯0_0阅读 8,356评论 0 4
  • 感觉自己在实践的过程中,缺少点web安全意识。而XSS作为全端安全中最常见的问题之一,我自己也想找点资料来学习学习...
    卓三阳阅读 21,669评论 1 10
  • 一、XSS XSS,( Cross Site Script,跨站脚本攻击)其原本缩写是 CSS,但为了和层叠样式表...
    许小花花阅读 6,104评论 0 9