跳转到主要内容

将基本HTML转换为DraftJS JSON格式。

项目描述

DraftJS Sanitizer

从字典中清理DraftJS JSON格式以允许保存。允许安全地将内容导出到字符串中,以防止注入引号和HTML实体。

Build Status Coverage Status Version

Supported versions Supported implementations

安装

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。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源分布

draftjs-sanitizer-1.0.0.tar.gz (6.1 kB 查看哈希值)

上传时间 来源

支持