2013-04-25 46 views
0

我想显示用户输入的html(来自所见即所得)。Python和Django。从html中删除所有js

但我有一些从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>

什么是最好方法,从删除所有的JS这个HTML?

对于删除<script>我可以使用正则表达式,但onclick处理程序(和其他js处理程序)呢?

感谢您的建议!

+2

你切不可想想**去掉**。你必须考虑**允许**。它更安全。 – antoyo 2013-04-25 16:26:00

+0

搜索“python html sanitizer”,选择你最喜欢的一个。但是Antoyo是对的。积极地允许尽可能少的人力。 (如在白名单中的个人属性级别及其值) – millimoose 2013-04-25 16:48:10

+0

更改此: bad_html ='

:((

':) :) – 2013-04-25 21:25:41

回答