31 行
670 B
Markdown
31 行
670 B
Markdown
# dom-sink-hardening
|
|
|
|
> `LAB ONLY` | 修复主题页
|
|
|
|
- 语言: `csharp`
|
|
- 主题: `dom-sink-hardening`
|
|
- 说明: 限制 `innerHTML`、模板拼接和 DOM sink 的直接写入。
|
|
- 典型场景: 适用于前端模板拼接、Markdown 渲染器和富文本预览逻辑。
|
|
|
|
## 脆弱示例
|
|
|
|
```cs
|
|
return Content($"<div>{value}</div>", "text/html");
|
|
```
|
|
|
|
## 更安全的写法
|
|
|
|
```cs
|
|
return Content($"<div>{HtmlEncoder.Default.Encode(value)}</div>", "text/html");
|
|
```
|
|
|
|
## 检查清单
|
|
|
|
- 明确输入边界与不可信来源
|
|
- 在服务端或可信封装层统一做校验/转义/约束
|
|
- 对关键路径补充自动化测试和依赖升级策略
|
|
|
|
## 相关系统
|
|
|
|
- React
|