1

私が取り組んでいる Web サイトでは、ユーザーが互いにメッセージを送信することがあります。ユーザーが < b > 、 < i > 、 < u > などのテキスト スタイル タグを使用して、それぞれテキストを太字、斜体、下線付きにできるようにしたいと考えています。しかし、実際には、これらの < script > タグで XSS されたくありません。あるいは、マウスオーバー属性を持つ < b > かもしれません。

そのための最も簡単で安全な方法は何ですか?

それが重要な場合、私はdjangoとjQueryを使用しています。

4

2 に答える 2

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'
于 2012-08-30T14:29:15.390 に答える
3

タグを許可しないでください。代わりに、そもそも XSS 攻撃を許可しないDjango でサポートされているマークアップ言語のいずれかを使用してください。

于 2012-08-30T01:55:08.357 に答える