Djangoテンプレートでタグとフィルターの使用を制限する方法はありますか?

ディエゴナバーロ

Djangoにはすでにデザイナー向けの優れたテンプレートシステムがあることは知っていますが、特定のテンプレートタグとフィルターの使用を制限することは可能かどうか疑問に思います。

テンプレート開発をよりオープンにするために、デザイナー向けのDjangoプラグインを構築していますが、djangoテンプレートシステムのロジックを非表示にして、必要なものだけをデザイナーに公開したいと考えています。

例:{% load %}テンプレートタグの使用を防ぎ、必要なタグのみをプリロードするにはどうすればよいですか?

ndpu

このデコレータを試してください:安全なテンプレートデコレータ

著者の説明から:

関数内でテンプレートのロードと解析に使用できるタグとフィルターを制限するデコレーター。

これは主に、ユーザーにDTLの権限を付与するときに使用することを目的としています。明らかに、悪意のある可能性のあることをユーザーが実行できるようにしたくはありません。

たとえば、{%ssi%}タグは、不適切に構成されている場合に機密データを表示するために使用される可能性があります。

{%load%}を使用すると、テンプレートタグに記述した無制限のPythonコードすべてにアクセスできます。{%load sudo%} {%sudo rm -rf /%} o_0

「load」タグ(とりわけ)は、デフォルトのタグホワイトリストにリストされていないことに注意してください。これで装飾された関数でテンプレートを(ただし間接的に)解析すると、リストされていない組み込みタグは未定義のタグのように動作します(つまり、TemplateSyntaxErrorが発生します)。

{%load%}はホワイトリストに登録されていないため、便宜上、いくつかのカスタムタグまたはフィルターを「組み込み」として含めることができます。ライブラリへのモジュールパスを配置するだけで、extrakwargまたはextra_librariesリストに含めることができます。これらのライブラリは注意深く防御的にプログラムする必要があるため、通常、これは推奨されません。

注:これは、レンダリングコンテキストのクリーンアップについては何もしません!それは完全にあなた次第です!これは、テンプレートで許可されるタグとフィルターを制限するだけです。

例:

from django.template.loader import get_template
safe_get_template = use_safe_templates(get_template)
tmpl = safe_get_template('myapp/some_template.html')

from django.template import Template
use_safe_templates(Template)('{% load sudo %}')
# TemplateSyntaxError: Invalid block tag 'load'

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Djangoテンプレートフィルターで文字数を制限する

分類Dev

Neo4jで、Java APIの使用中にパス内のノードとリレーションタイプを制限する方法はありますか?

分類Dev

特定のオーケストレーションのアクティブなインスタンスの数を制限する方法はありますか?

分類Dev

一時テーブルを使用する以外に、個別の手順でフィルタリング/ソートする方法はありますか?

分類Dev

C ++の可変個引数テンプレートの関数パラメーターに型制限を適用する良い方法はありますか?

分類Dev

Calibreレシピのコンテンツでフィード記事をフィルタリングする方法はありますか?

分類Dev

EFインクルードテーブルから取得するときにレコードをフィルタリングする方法はありますか

分類Dev

AngularJSルーティングを使用するときにテンプレートをプリロードする方法はありますか?

分類Dev

Android StudioエディターでRecyclerViewのコンテンツのプレビューをグリッドとして表示する方法はありますか?

分類Dev

Android StudioエディターでRecyclerViewのコンテンツのプレビューをグリッドとして表示する方法はありますか?

分類Dev

URLをドメイン名のみに制限する液体フィルターはありますか?

分類Dev

テストインターフェイス内のグループで1つ以上のテストをラップする方法はありますか?

分類Dev

正しい外部キーのdjangoフォームでクエリセットを動的にフィルタリングする方法はありますか?

分類Dev

TClientDataSetフィルターに制限はありますか、それともバグですか?

分類Dev

ルーティングロジックまたはMeteorテンプレートヘルパーでデータを提供する必要がありますか?

分類Dev

HTMLドキュメントのデータをフィルタリングする方法はありますか?

分類Dev

Djangoテンプレートで「関連フィールド」をフィルタリングすることは可能ですか?

分類Dev

Excelフォームのヘッダーとフッターを制限する方法はありますか?

分類Dev

Pythonで2つのデータ行をフィルタリングする方法はありますか?

分類Dev

TPLデータフローグラフ内のTransformBlockで失敗する要素をルーティングする慣用的な方法はありますか?

分類Dev

RETSデータフィードでプロパティのタイトルを設定するには、どの列を使用する必要がありますか?

分類Dev

複数の列の内容でPythonのデータフレームをフィルタリングする簡単な方法はありますか?

分類Dev

VueルーターでHTMLファイルにルーティングする方法はありますか?

分類Dev

結果に基づいてフィルタリングおよびパーティション化するイテレーターチェーン内のアイテムのアンラップを削除する方法はありますか?

分類Dev

特定のグループによる重複/繰り返しエントリを含まないフィルタリングする方法はありますか?

分類Dev

PySparkでテキストファイルを読み取るときにパーティションの数を制御する方法はありますか?

分類Dev

フォームフィールドとボタンのフォントと高さをレスポンシブにする方法はありますか?

分類Dev

djangoのすべてのテンプレートにデフォルトのベーステンプレートを指定する方法はありますか?

分類Dev

パンダのグループごとの結果を要素ごとにフィルタリングする方法はありますか?

Related 関連記事

  1. 1

    Djangoテンプレートフィルターで文字数を制限する

  2. 2

    Neo4jで、Java APIの使用中にパス内のノードとリレーションタイプを制限する方法はありますか?

  3. 3

    特定のオーケストレーションのアクティブなインスタンスの数を制限する方法はありますか?

  4. 4

    一時テーブルを使用する以外に、個別の手順でフィルタリング/ソートする方法はありますか?

  5. 5

    C ++の可変個引数テンプレートの関数パラメーターに型制限を適用する良い方法はありますか?

  6. 6

    Calibreレシピのコンテンツでフィード記事をフィルタリングする方法はありますか?

  7. 7

    EFインクルードテーブルから取得するときにレコードをフィルタリングする方法はありますか

  8. 8

    AngularJSルーティングを使用するときにテンプレートをプリロードする方法はありますか?

  9. 9

    Android StudioエディターでRecyclerViewのコンテンツのプレビューをグリッドとして表示する方法はありますか?

  10. 10

    Android StudioエディターでRecyclerViewのコンテンツのプレビューをグリッドとして表示する方法はありますか?

  11. 11

    URLをドメイン名のみに制限する液体フィルターはありますか?

  12. 12

    テストインターフェイス内のグループで1つ以上のテストをラップする方法はありますか?

  13. 13

    正しい外部キーのdjangoフォームでクエリセットを動的にフィルタリングする方法はありますか?

  14. 14

    TClientDataSetフィルターに制限はありますか、それともバグですか?

  15. 15

    ルーティングロジックまたはMeteorテンプレートヘルパーでデータを提供する必要がありますか?

  16. 16

    HTMLドキュメントのデータをフィルタリングする方法はありますか?

  17. 17

    Djangoテンプレートで「関連フィールド」をフィルタリングすることは可能ですか?

  18. 18

    Excelフォームのヘッダーとフッターを制限する方法はありますか?

  19. 19

    Pythonで2つのデータ行をフィルタリングする方法はありますか?

  20. 20

    TPLデータフローグラフ内のTransformBlockで失敗する要素をルーティングする慣用的な方法はありますか?

  21. 21

    RETSデータフィードでプロパティのタイトルを設定するには、どの列を使用する必要がありますか?

  22. 22

    複数の列の内容でPythonのデータフレームをフィルタリングする簡単な方法はありますか?

  23. 23

    VueルーターでHTMLファイルにルーティングする方法はありますか?

  24. 24

    結果に基づいてフィルタリングおよびパーティション化するイテレーターチェーン内のアイテムのアンラップを削除する方法はありますか?

  25. 25

    特定のグループによる重複/繰り返しエントリを含まないフィルタリングする方法はありますか?

  26. 26

    PySparkでテキストファイルを読み取るときにパーティションの数を制御する方法はありますか?

  27. 27

    フォームフィールドとボタンのフォントと高さをレスポンシブにする方法はありますか?

  28. 28

    djangoのすべてのテンプレートにデフォルトのベーステンプレートを指定する方法はありますか?

  29. 29

    パンダのグループごとの結果を要素ごとにフィルタリングする方法はありますか?

ホットタグ

アーカイブ