Jinja2は自動的にすべてのHTMLタグをエスケープしますが、一部のタグ(例えばimg
、b
など)をエスケープしません。どうしたらいいですか?Jinja2はimg、bなどすべてのHTMLをエスケープします
12
A
答えて
11
あなた自身のフィルタを書くことができます。 scrubber libraryは、HTMLを整理するのにかなり良いです。フィルタは返された文字列をjinja2.Markup
にラップする必要がありますので、テンプレートはそれを再エスケープしません。
編集:コード例
import jinja2
import scrubber
def sanitize_html(text):
return jinja2.Markup(scrubber.Scrubber().scrub(text))
jinja_env.filters['sanitize_html'] = sanitize_html
11
あなたはホワイトリストのアプローチを使用して提出上の入力を解析することをお勧めします - いくつかの良い例in this questionとviable optionsはそこにあります。
{{comment|safe}}
6
Bleachライブラリは非常によく行うことができます:あなたはそれをやったら
、あなたはsafe
フィルターでエスケープすべきでないHTMLが含まれます任意の変数をマークすることができます。例えば
、変数「jinja_env」の範囲であると仮定すると:次にテンプレートであなたのようなものかもしれません
from bleach import clean
from markupsafe import Markup
def do_clean(text, **kw):
"""Perform clean and return a Markup object to mark the string as safe.
This prevents Jinja from re-escaping the result."""
return Markup(clean(text, **kw))
jinja_env.filters['clean'] = do_clean
:あなたはまた、呼び出し可能に使用することができます
<p>{{ my_variable|clean(tags=['img', 'b', 'i', 'em', 'strong'], attributes={'img': ['src', 'alt', 'title', 'width', 'height']}) }}</p>
を(代わりに(例えば、srcが有効なURLを提供しているかどうかを確認するなど)属性をより完全に検証することができます。ドキュメントにan exampleが表示されます。
関連する問題
- 1. jinja2:htmlエスケープ変数
- 2. Jinja2でHTMLタグを自動エスケープする方法を避ける
- 3. Jinja2とLaTeXのスラッシュをエスケープする
- 4. jinja2.Markupに文字列として、すべてのHTMLコンテンツを取得するためのJinja2の
- 5. <img>または<img/>のタグを除いたすべてのhtmlタグを削除します。
- 6. Jinja2はHTML文字列を安全なものとしてマークします
- 7. すべてのhtml文字をエスケープするLaravel 5グローバル・ミューテータ?
- 8. jinja2 filesystemloaderすべてのサブディレクトリをロード
- 9. すべてのimgにランダムなクラスを割り当てます
- 10. HTMLを解析してすべてを取得するimg src Google Script
- 11. python - jinja2 - すべてのhtmlをpythonから1つのPDFに変換する(複数ではなく)
- 12. htmlをエスケープするには?
- 13. すべてのHTML imgクローズタグをXMLに準拠させるにはどうすればいいですか? (<img>~<img/>)
- 14. Flask、Jinja2、HTMLを使用してボタンプレスのページを更新する
- 15. javascriptでhtml imgタグを返します。
- 16. Jinja2でのレンダリング中に二重引用符をエスケープする
- 17. Railsは生のhtmlをエスケープするjavascriptをレンダリングしますか?
- 18. エスケープHTMLは
- 19. テンプレートからjinja2でhtml-reportを保存します。
- 20. PHPを使ってhtmlからimgを作成しますか?
- 21. Jinja2を使用してアクティブなタブを検出しますか?
- 22. BeautifulSoup find_all( "img")がすべてのサイトで動作しない
- 23. エスケープHTML
- 24. 私はJinja2のを使用しています、と私はURLを持っているJinja2の
- 25. HTML文字列のすべてのimgタグを置き換える方法<a><img></a>?
- 26. IEのHTMLをエスケープ
- 27. soapでhtmlをエスケープする
- 28. このJavaScript HTMLを正しくエスケープしていませんか?
- 29. HTMLのエスケープ方法は?:エラー?
- 30. Golang - HTMLテンプレートでエスケープしない