1

我目前正在使用django-ckeditor允许用户为其个人资料输入丰富的描述。

然而,这为试图进行 XSS 和其他代码注入的恶意用户打开了大门。

我想知道解决这个问题的最佳方法是什么?

我查看了Python HTML sanitizer / scrubber / filter,但似乎这些解决方案摆脱了诸如“style =”之类的属性,这与使用ckeditor例如彩色文本或其他依赖于这些的东西完全矛盾属性。

我应该使用其他工具代替ckeditor吗?或者我能做什么?

我的主要目标是允许用户在他们的“个人资料”中显示图片、彩色文本等

4

1 回答 1

1

您应该决定并编写允许发布内容的“白名单”。然后,彻底解析发布的数据并清理不在该白名单中的所有内容。如果是某种样式 - 解析样式属性并删除除白名单之外的所有内容。

例如,您可以使用古老的 BeautifulSoup 来做到这一点。

当然,不要将<script>标签或onSOMETHING处理程序列入白名单 - 它们通常带来的痛苦多于收获。

于 2012-05-11T06:08:55.733 回答