前端 | XSS 的攻击方式及其防御

Posted 零熊技术团队

tags:

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

1. XSS 的攻击手段

XSS(Cross-Site Scripting,跨域脚本攻击)攻击是最常见的 Web 攻击,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。其重点是『跨域』和『客户端执行』。

XSS 的本质:

  • 恶意代码未经过滤,与网站正常的代码混在一起;

  • 浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。

XSS 攻击一般存在以下几类:

  • Reflected XSS(反射型 XSS 攻击)

  • Stored XSS(存储型 XSS 攻击)

  • DOM XSS

  • JSONP XSS

类型 存储区 插入点
Reflected XSS URL html 
Stored XSS 后端数据库 HTML 
DOM XSS 后端数据库 / 前端存储 / URL 前端 javascript 
JSONP XSS 后端数据库 / 前端存储 / URL 前端 JavaScript 
1.1 Reflected XSS

反射型的 XSS 攻击,主要是由于服务端接收到客户端的不安全输入,在客户端触发执行从而发起 Web 攻击。

具体而言,反射型 XSS 只是简单地把用户输入的数据 “反射” 给浏览器,这种攻击方式往往需要攻击者诱使用户点击一个恶意链接,或者提交一个表单,或者进入一个恶意网站时,注入脚本进入被攻击者的网站。这是一种非持久型的攻击。

比如:在某购物网站搜索物品,搜索结果会显示搜索的关键词。搜索关键词填入<script>alert('handsome boy')</script>,点击搜索。页面没有对关键词进行过滤,这段代码就会直接在页面上执行,弹出 alert。

1.2 Stored XSS

基于存储的 XSS 攻击,是通过提交带有恶意脚本的内容存储在服务器上,当其他人看到这些内容时发起 Web 攻击。一般提交的内容都是通过一些富文本编辑器编辑的,很容易插入危险代码。

比较常见的一个场景是攻击者在社区或论坛上写下一篇包含恶意 JavaScript 代码的文章或评论,文章或评论发表后,所有访问该文章或评论的用户,都会在他们的浏览器中执行这段恶意的 JavaScript 代码。这是一种持久型的攻击。

1.3 DOM XSS

基于 DOM 的 XSS 攻击是指通过恶意脚本修改页面的 DOM 结构,是纯粹发生在客户端的攻击。

DOM 型 XSS 跟前两种 XSS 的区别:DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。举个栗子

以上是关于前端 | XSS 的攻击方式及其防御的主要内容,如果未能解决你的问题,请参考以下文章

总结几种常见web攻击手段及其防御方式

常见的web攻击及其防御

Web前端攻击方式及防御措施

如何正确防御xss攻击

xss原理攻击方式与防御

通过脚本片段绕过XSS防御