将基本HTML转换为DraftJS JSON格式。
项目描述
安装
pip install draftjs-sanitizer
使用方法
移除已知漏洞
这会删除任何通过链接原始javascript代码进行XSS攻击的URL。
from draftjs_sanitizer import clean_draft_js
clean_draft_js({
"blocks": [
{
"key": "an6ci",
"data": {},
"text": "Get Saleor today!",
"type": "unstyled",
"depth": 0,
"entityRanges": [
{
"key": 0,
"length": 17,
"offset": 0
}
],
"inlineStyleRanges": []
}
],
"entityMap": {
"0": {
"data": {
"url": "javascript:alert('Oopsie!');"
},
"type": "LINK",
"mutability": "MUTABLE"
}
}
})
将JSON导出为HTML使用
这允许将其作为过滤器运行,以防止在将JSON放入HTML代码时进行注入或绕过。
from draftjs_sanitizer import to_string
dumped_json = to_string({"block": "</div><script>alert('Oopsie!');</script>"})
示例1:属性绕过
<div data-draft-js-json='{"block": "'<script>alert('Oopsie!');</script>"}'></div>
示例2:绕过内部HTML
<div>
{"block": "</div><script>alert('Oopsie!');</script>"}
</div>
支持的检查
类型 | 实体 | 描述 |
---|---|---|
JavaScript URL | IMAGE , LINK |
防止通过javascript 协议将javascript注入URL。 |
无效URL | IMAGE , LINK |
从JSON内容中删除任何无效的URL。 |
危险字符 | 任何 |
删除任何适合HTML合并的敏感字符:" , ' , < , > 。 |
开发
./setup.py develop
pip install -r requirements_dev.txt
您可以通过以下方式轻松扩展行为:
draftjs_sanitizer.encoder.DraftJSSafeEncoder
draftjs_sanitizer.sanitizer.DraftJSSanitizer
依赖项
urllib3
用于解析和验证URL的RFC 3986。