攻击方式:在页面展示内容中参杂js代码,以获取网页信息;

预防措施:转换生成js’的特殊字符。


下面介绍来自于某博客,原文地址:[https://my.oschina.net/u/4308391/blog/3507703/print**](https://my.oschina.net/u/4308391/blog/3507703/print)
**

1.概念

XSS 是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码(代码包括HTML代码和客户端脚本)植入到提供给其它用户使用的页面中。

2.示例

(1)针对表单的 input/textarea 文本框
xss攻击主要是针对表单的 input/textarea 文本框发起的,比如在文本框中输入:

  1. <script> alert(1) </script>

如果前端不进行过滤直接提交到后端(比如Node ),而服务端也没有进行过滤直接写入数据库中,那么在下一次(或其他用户)进入页面时,就会执行alert(1), 页面弹出 1 。

(2)窃取网页中的cookie值
文本框中恶意输入:

  1. <script> alert(document.cookie) </script>

就可以获取用户 cookie 了。

(3)劫持流量实现恶意跳转
文本框中恶意输入:

  1. <script>window.location.href="www.abc.com";</script>

导致,所访问的网站就会自动跳转到 www.abc.com 了。

3.XSS 攻击预防

对用户输入的数据进行HTML Entity编码, 也就是对<script><a>等标签的< >进行转换,然后再保存到后台数据库。
Node环境下,安装:

  1. $ npm install xss

然后修改:

  1. const xss = require('xss')
  2. const inputValue = content // 未进行 xss 防御
  3. const inputValue = xss(content) // 已进行 xss 防御

然后如果在 input 输入框 恶意输入 <script> alert(1) </script>, 就会被转换为下面的语句并存入数据库:
&lt;script&gt; alert(1) &lt;/script&gt;,已达到无法执行 <script> 的目的。

  1. 转换特殊字符:
  2. & -> &amp;
  3. < -> &lt;
  4. > -> &gt;
  5. ' -> &#x27;
  6. " -> &quot;
  7. / -> &#x2F;