Cross Site Script 跨站脚本攻击
在 web页面注入脚本,使用 JS窃取用户信息
为了和层叠样式表(Cascading Style Sheet)有所区分,因而在安全领域叫做 XSS
XSS预防
- HttpOnly 防止劫取 Cookie
- 用户的输入检查
- 服务端的输出检查
过滤输入
不要相信前端的任何输入,必须对前端的输入进行过滤
对用户的输入进行过滤,移除用户输入的
- html标签过滤
- escape 过滤 html标签
- style节点
- script节点
- iframe节点 ```jsx npm install xss
ctx.help.escape()
<a name="R8H9s"></a>
### HTML编码
HTML Entity编码
<a name="ObUvt"></a>
### cookie
将重要的 cookie,设置成 httpOnly,禁止通过 js获取 cookie
<a name="LJNLQ"></a>
## XSS攻击场景
XSS出现的根源:用户输入的内容会执行危险的代码,例如
1. 留言
1. 发帖子,发文章
1. 添加商品,预览商品
1. 店铺装修
1. 低代码平台的自定义代码
1. 在网站上注入恶意的客户端代码
1. input
1. image
1. 恶意脚本一般包括 JavaScript,有时也会包含 HTML 和 Flash
1. 共同点为:将一些隐私数据像 cookie、session 发送给攻击者,
1. 将受害者重定向到一个由攻击者控制的网站,在受害者的机器上进行一些恶意操作
<a name="bhEHI"></a>
### DOM-base攻击
利用 DOM本身的缺陷攻击,例如<br />img标签 onerror属性<br />a href属性
```jsx
<img src="./user.jpg" onerror="javascript:alert('img xss')">
存储型攻击
表单提交的数据存在恶意代码,被保存到目标网站的服务器中
反射性攻击
恶意代码并没有被保存在目标网站,
通过引诱用户点击一个链接,到目标网站的恶意链接来实施攻击。