gpt4 book ai didi

python - 我如何在 Django/Python 中确保所见即所得输入 HTML 的安全性?

转载 作者:太空狗 更新时间:2023-10-30 01:26:44 26 4
gpt4 key购买 nike

我想消除 Web 应用程序中的 XSS/JavaScript 注入(inject)漏洞,允许用户使用像 CKEditor 这样允许任意 HTML 的编辑器(无论我选择的编辑器是否允许任意 HTML,blackhats 都可以提交任意 HTML)。所以没有 JavaScript,无论是 SCRIPT 标签、ONCLICK 和家族,还是其他任何东西。目标平台为Python和Django。

我最好的选择是什么?我对将标签和属性列入白名单的实现持开放态度;也就是说,我认为没有必要允许用户提交您可以在 HTML 中构建的所有内容,同时 JavaScript 被删除。我很高兴拥有支持标签可用性的富文本,可以允许相当富有表现力的富文本。我也会对生成 Markdown 的编辑器持开放态度,并在保存数据之前去除所有 HTML 标签。 (HTML 操作似乎更简单,但我也会考虑 Markdown 实现的解决方案。)

我也不认为有必要生成经过净化的文本,而是抛出一个表明提交未通过测试的异常。 (因此,将字符串小写并搜索“<script”、“onclick”等可能就足够了。)

如果可以选择的话,我在解决方案中的第一选择可能是标签和属性名称的白名单。

最好的解决方案是什么?

最佳答案

如果您选择使用生成 HTML 的所见即所得编辑器,请使用 bleach在服务器上清理您的 HTML(通过白名单)可能就足够了。

如果您选择使用 markdown(或其他非 html 标记)编辑器,您还可能会保存 markdown 源并在服务器端生成和清理 html(生成后!)。这允许您保持 markdown 不变(使用内联 html 等),因为 html 在渲染后经过清理。但是,如果您的客户端编辑器支持预览,则当从服务器加载 markdown 时,您还需要非常小心浏览器渲染!为此,大多数 Markdown 编辑器都包括客户端 sanitizer 。

关于python - 我如何在 Django/Python 中确保所见即所得输入 HTML 的安全性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42725293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com