【WEB安全】防止XSS攻击

作者: phpworkerman | 来源:发表于2020-07-02 21:07 被阅读0次
XSS 的定义

Cross-Site Scripting(跨站脚本攻击)简称 XSS(用来区分样式 CSS) ,Web 页面被注入恶意代码,通常注入的是 JS 代码,带不限于 JS。

XSS 的注入方式
  • 在 HTML 代码中以 script 标签注入,例:
<div><?php echo $_GET['sign'];?></div>
//通过浏览器GET传参 sign=<script>alert(1)</script> 即可触发JS片段
  • 在内联的 JavaScript 中,拼接的数据突破了原本的限制(字符串,变量,方法名等)
<script>
    let msg = '输出' + <?php echo $_GET['sign'];?>;
    //通过浏览器GET传参 sign=alert(1) 即可触发JS片段
</script>
  • 在标签属性中,恶意内容包含引号,从而突破属性值的限制,注入其他属性或者标签,例:
<input type="text" value="<?php echo $_GET['sign'];?>" />
//通过浏览器GET传参 sign="><script>alert(1)</script> 通过 "> 字符提前闭合Input标签来达到执行JS目的
  • 在标签的 href、src 等属性中,包含 javascript: 等可执行代码,例:
<a href="<?php echo $_GET['sign'];?>">点击跳转</a>
//通过浏览器GET传参 sign=javascript:alert(1) 点击即可触发JS片段
  • 在 onload、onerror、onclick 等事件中,注入不受控制代码
<button onclick="<?php echo $_GET['sign'];?>">点击触发</button>
//通过浏览器GET传参 sign=<script>alert(1)</script> 点击即可触发JS片段
XSS 的分类
  • 存储型:恶意代码通过提交存储在网站数据库中,通过页面打开时触发
  • 反射型:恶意代码通过 URL 传递,当页面打开时触发
  • DOM型:恶意代码通过 URL 传递,当页面打开时触发,不同于其他类型是由服务的的漏洞引起,DOM 型是前端 JS 的安全漏洞
XSS 预防

通常对于 XSS 的解决方式是对输入内容进行过滤,严格限制输入的规则,而对恶意代码的预防有如下两种途径:
1.阻止恶意代码提交

  • 该方式由后端对输入数据进行过滤、转义后存入数据库
  • 过滤不能放在前端,因为一旦绕过前端过滤机制,就可以直接提交恶意代码
  • 后端返回前端的数据,除了明确使用场景的,不能直接返回转义的数据,因为转义后的代码无法通过JS直接作用vue模板、字符长度计算、alert等

2.阻止浏览器执行恶意代码

  • 纯前端渲染,代码和数据分离,需要插入页面的数据全部采用 AJAX 来进行请求,通过 innerText 、setAttribute 、style 等明确告诉浏览器是文本数据,但该方式有性能局限性,后台业务可这样操作
  • 对 HTML 做充分转义,对常见的 <>&/'" 字符进行转义,但无法阻止内联JS,跳转链接 src 等的攻击,这时候需要根据业务场景选择成熟的转义库,优化转义策略

3.DOM 型注入防御
相比前两种,该注入方式是通过前端 JS 代码不严谨造成的,在编码阶段,慎重使用 innerHTML、outHTML、document.write(),这些方法会不通过转义执行代码,应尽量使用 textContent、setAttribute等。另外 DOM 中的内联监听器,onclick、onerror,a 标签的 src 等都是会有注入风险,应谨慎使用。

相关文章

  • 【WEB安全】防止XSS攻击

    XSS 的定义 Cross-Site Scripting(跨站脚本攻击)简称 XSS(用来区分样式 CSS) ,W...

  • xss攻击

    前端安全之XSS攻击 XSS(cross-site scripting跨域脚本攻击)攻击是最常见的Web攻击,其重...

  • 01 Web 前端安全相关

    01 前端安全系列(一):如何防止XSS攻击?02 前端安全系列(二):如何防止CSRF攻击?03 AJAX请求真...

  • Openresty 配置 waf

    Waf作用: 防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击 防止svn/备...

  • XSS攻击

    什么是XSS? XSS攻击中文全称“跨站脚本攻击”。XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用...

  • XSS盗取cookie

    XSS定义 XSS是一种比较容易出现的安全漏洞,也是web比较常见的web攻击方式。XSS是指攻击者利用网络没有对...

  • XSS 攻击防守

    最常见的攻击xss 什么是xss? 为什么是xss? 开放式Web应用程序安全项目(Open Web Applic...

  • 前端安全

    XSS XSS攻击全称跨站脚本攻击,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提...

  • XSS && CSRF 攻击

    XSS 攻击 XSS (Cross-Site Scripting,跨站脚本攻击)是一种常见的web安全漏洞,它允许...

  • XSS攻击与防御

    Web安全之XSS攻防 1. XSS的定义 跨站脚本攻击(Cross Site Scripting),缩写为XSS...

网友评论

    本文标题:【WEB安全】防止XSS攻击

    本文链接:https://www.haomeiwen.com/subject/pcjfqktx.html