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

回答