在我工作的網站上,用戶可能互相發送消息。我希望用戶能夠使用文本樣式標記,例如< b>,< i>和< u>分別使文本變爲粗體,斜體和下劃線。但是,事實上,我不想用這些<腳本>標籤進行XSS處理。或者也許是帶有mouseover屬性的< b>。我想在django中使用文本樣式的標籤,但我不想被XSSed
什麼是最簡單和最安全的方法呢?
我使用django和jQuery,如果重要的話。
在我工作的網站上,用戶可能互相發送消息。我希望用戶能夠使用文本樣式標記,例如< b>,< i>和< u>分別使文本變爲粗體,斜體和下劃線。但是,事實上,我不想用這些<腳本>標籤進行XSS處理。或者也許是帶有mouseover屬性的< b>。我想在django中使用文本樣式的標籤,但我不想被XSSed
什麼是最簡單和最安全的方法呢?
我使用django和jQuery,如果重要的話。
如果你真的想使用HTML標籤,你應該考慮使用Bleach。
>>> evil = "This <script>...</script> is partly <b>evil</b>"
>>> bleach.clean(evil)
u'This <script>...</script> 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'
不允許標籤。而是使用其中一種標記語言supported by Django,它們首先不允許XSS攻擊。
謝謝。超級乾淨而智能的解決方案。 –