【发布时间】:2013-04-25 16:22:41
【问题描述】:
我想显示用户键入的 html(来自 WYSIWYG)。
但是我在从 html 中删除 js 时遇到了一些问题。
这是我的看法:
def bad_view(request):
# in real project we got it from user
bad_html = '<p onclick="alert(0)">:((</p><script>alert(0);</script>'
return render(request, 'template.html', {'bad_html': bad_html})
我的模板中的代码:
{{ bad_html|safe }}
bad_html 应该是这样的<p onclick="">:((</p>
从这个 html 中删除所有 js 的最佳方法是什么?
对于删除<script>,我可以使用正则表达式,但是 onclick 处理程序(和其他 js 处理程序)呢?
感谢您的建议!
【问题讨论】:
-
您不能考虑要删除什么。您必须考虑允许什么。它更安全。
-
搜索“python html sanitizer”,选择你最喜欢的。但安托约是对的。尽可能少地允许,积极地。 (如,在单个属性及其值级别列入白名单。)
-
改变这个:
bad_html = '<p onclick="alert(0)">:((</p><script>alert(0);</script>到bad_html = '<p>:((</p>':)
标签: javascript python html django wysiwyg