攻击方式:在页面展示内容中参杂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 文本框发起的,比如在文本框中输入:
<script> alert(1) </script>
如果前端不进行过滤直接提交到后端(比如Node ),而服务端也没有进行过滤直接写入数据库中,那么在下一次(或其他用户)进入页面时,就会执行alert(1)
, 页面弹出 1 。
(2)窃取网页中的cookie值
文本框中恶意输入:
<script> alert(document.cookie) </script>
就可以获取用户 cookie 了。
(3)劫持流量实现恶意跳转
文本框中恶意输入:
<script>window.location.href="www.abc.com";</script>
导致,所访问的网站就会自动跳转到 www.abc.com 了。
3.XSS 攻击预防
对用户输入的数据进行HTML Entity编码, 也就是对<script>
、<a>
等标签的< >
进行转换,然后再保存到后台数据库。
Node环境下,安装:
$ npm install xss
然后修改:
const xss = require('xss')
const inputValue = content // 未进行 xss 防御
const inputValue = xss(content) // 已进行 xss 防御
然后如果在 input 输入框 恶意输入 <script> alert(1) </script>
, 就会被转换为下面的语句并存入数据库:<script> alert(1) </script>
,已达到无法执行 <script>
的目的。
转换特殊字符:
& -> &
< -> <
> -> >
' -> '
" -> "
/ -> /