Django フレームワークの CSRF の使用法

Django フレームワークの CSRF の使用法

目次

世界的な使用

csrfトークンを設定する

フォームの使用

スクリプトの使用

別途免除

csrfクラスライブラリの紹介

csrf からの個別の除外を設定する

個別の保護

グローバルCSRFをオフにする

csrfライブラリの紹介

設定機能保護

csrfトークンの構成

要約する


世界的な使用

csrf ミドルウェアは、Django プロジェクト構成でデフォルトでグローバルに使用され、コメントアウトされると使用できなくなります。

ただし、あまり安全でないことはお勧めできません。

 

csrfトークンを設定する

フォームの使用

csrf トークン テンプレート タグをフォーム フォームで直接使用し、送信時に csrf を自動的に検証します。

{% csrf_token %}

 

スクリプトの使用

プロジェクトでは、多くの操作で ajax の操作と送信が必要になります。

ソース コードを表示すると、csrf トークン タグがフォーム内に csrfmiddlewaretoken (デフォルト) という名前の非表示の入力ボックスを作成していることがわかります。

Js はトークンを取得および設定します

let csrf = $('input[name="csrfmiddlewaretoken"]').val()

   $.ajax({
           type: 'POST',
           url: "/media_list",
           data: {csrfmiddlewaretoken:csrf},
           dataType: 'json',
           success: function (data) {
// 将mp3list赋值给this.songs
this.songs = data.list;
// 调用渲染歌曲列表的方法
this.renderSongList();
           }.bind(this),
           error: function (e) {
               console.log("ERROR : ", e);
          }
   });

 

別途免除

メソッドで csrf 保護を設定したくない場合は、csrf デコレーターを使用できます。

csrfクラスライブラリの紹介

from django.views.decorators.csrf import csrf_exempt

 

csrf からの個別の除外を設定する

csrf_exempt を使用して、このメソッドを csrf 検証から個別に除外します。

@csrf_exempt
def upload_music(request):

個別の保護

より適切なのは、ほとんどの関数とメソッドは csrf を検証する必要がなく、検証が必要な場合はわずかです。

グローバルCSRFをオフにする

settings.py のミドルウェアを変更し、csrf ミドルウェアをコメントアウトします。

 

csrfライブラリの紹介

from django.views.decorators.csrf import csrf_protect

設定機能保護

ビューでメソッドを設定し、csrf_protect デコレーターを使用して、upload_music メソッドに対して個別に csrf 検証を実行します。

@csrf_protect
def upload_music(request):

csrfトークンの構成

csrf 属性は settings.py で設定でき、属性は次のように設定できます。

CSRF_HEADER_NAME = 'HTTP_X_CSRF_AARONTOKEN'
CSRF_COOKIE_SAMESITE = 'Strict'
CSRF_COOKIE_NAME = 'MyCookie'
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_SECURE = False
CSRF_TRUSTED_ORIGINS = []

要約する

Csrf 検証はプロジェクトのセキュリティにとって非常に重要であり、上記の csrf の設定と使用を通じて、Django フレームワークについてある程度の理解が得られ、より柔軟に使用できるようになりました。

おすすめ

転載: blog.csdn.net/json_ligege/article/details/131683875