57 行
941 B
Markdown
57 行
941 B
Markdown
# xss-output-encoding
|
|
|
|
> `LAB ONLY` | 修复主题页
|
|
|
|
- 语言: `nodejs`
|
|
- 主题: `xss-output-encoding`
|
|
- 说明: 对不可信输入做上下文输出编码,避免 HTML、属性和脚本上下文执行。
|
|
- 典型场景: 适用于模板输出、服务端渲染片段和后台管理界面回显场景。
|
|
|
|
## 脆弱示例
|
|
|
|
```js
|
|
res.send(`<div>${req.query.q}</div>`);
|
|
```
|
|
|
|
## 更安全的写法
|
|
|
|
```js
|
|
res.send(`<div>${escapeHtml(req.query.q)}</div>`);
|
|
```
|
|
|
|
## 检查清单
|
|
|
|
- 明确输入边界与不可信来源
|
|
- 在服务端或可信封装层统一做校验/转义/约束
|
|
- 对关键路径补充自动化测试和依赖升级策略
|
|
|
|
## 相关系统
|
|
|
|
- ASP.NET Core
|
|
- Adminer
|
|
- Adobe Commerce
|
|
- Angular
|
|
- Discourse
|
|
- Django
|
|
- Drupal
|
|
- Express
|
|
- Fastify
|
|
- Flask
|
|
- Ghost
|
|
- Gin
|
|
- Grafana
|
|
- Joomla
|
|
- Kibana
|
|
- Laravel
|
|
- Mattermost
|
|
- MediaWiki
|
|
- Moodle
|
|
- React
|
|
- Redmine
|
|
- Ruby on Rails
|
|
- Symfony
|
|
- Vue
|
|
- WooCommerce
|
|
- WordPress
|
|
- phpMyAdmin
|