2012-08-29 62 views
1

在我工作的網站上,用戶可能互相發送消息。我希望用戶能夠使用文本樣式標記,例如< b>,< i>和< u>分別使文本變爲粗體,斜體和下劃線。但是,事實上,我不想用這些<腳本>標籤進行XSS處理。或者也許是帶有mouseover屬性的< b>。我想在django中使用文本樣式的標籤,但我不想被XSSed

什麼是最簡單和最安全的方法呢?

我使用django和jQuery,如果重要的話。

回答

3

如果你真的想使用HTML標籤,你應該考慮使用Bleach

>>> evil = "This <script>...</script> is partly <b>evil</b>" 
>>> bleach.clean(evil) 
u'This &lt;script&gt;...&lt;/script&gt; is partly <b>evil</b>' 

使用clean您可以明確列出您想要允許的標籤。通過使用strip,您還可以剝離不允許的標籤而不是轉義它們:

>>> evil = "This uses <i>i</i> and <b title='hovertext'>b</b> and <em>em</em>" 
>>> bleach.clean(evil, tags=["b"], attributes=dict(), strip=True) 
u'This uses i and <b>b</b> and em' 
3

不允許標籤。而是使用其中一種標記語言supported by Django,它們首先不允許XSS攻擊。

+0

謝謝。超級乾淨而智能的解決方案。 –

相關問題