質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSRF

クロスサイトリクエストフォージェリ (Cross site request forgeries、CSRF)は、 外部Webページから、HTTPリクエストによって、 Webサイトの機能の一部が実行されてしまうWWWにおける攻撃手法です。

Q&A

1回答

3275閲覧

JavaScriptによるCSRFトークンの生成について

study_111

総合スコア82

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSRF

クロスサイトリクエストフォージェリ (Cross site request forgeries、CSRF)は、 外部Webページから、HTTPリクエストによって、 Webサイトの機能の一部が実行されてしまうWWWにおける攻撃手法です。

0グッド

0クリップ

投稿2020/08/04 07:19

編集2020/08/04 08:32

CSRFトークンについて、分からない部分があり質問させて貰いました。
js-cookieを使用すれば、const csrftoken = Cookies.get('csrftoken');このような形でCSRFトークンを簡単に取得できると、Djangoドキュメントにて記載があり、実際にアプリに組み込んでみた所、取得できたことが確認出来ました。
しかし、疑問な点なのですが、ドキュメントには「CSRFトークンの cookie は csrftoken という名前ですが」とありますが、cookieはサーバー側で任意の名前をセットし発行しブラウザへ送るものであり、デフォルトでセットされているものではないのではないでしょうか...?
cookieについて、少々混乱してしまった部分があります為、教えて頂けましたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

「デフォルトでは、CSRF トークンの cookie は csrftoken という名前ですが」という説明は「Djangoのデフォルト」ではそうだという意味です。一方、「cookieはサーバー側で任意の名前をセットし発行しブラウザへ送るものであり、デフォルトでセットされているものではないのではないでしょうか...?」というのは、Djangoと関係ない一般的な話です。
ウェブの一般論とDjango特有の話を混同されているように思います。

投稿2020/08/04 08:53

ockeghem

総合スコア11705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

study_111

2020/08/04 09:15 編集

ご回答ありがとうございます。 自分としましては、「Cookies.get」にて何故「CSRFトークン」を取得出来るのかといった部分が分からないといった状況です。「 const csrftoken = Cookies.get('csrftoken'); 」こちらで指定している「csrftoken」はブラウザから取得していると思うのですが、サーバーサイド側でクッキーにCSRFトークンを設定していなければクッキー自体取得出来ないかと思います。今回は、Django側にレスポンスを投げずていないにも関わらず、Cookies.getによりCSRFトークンが取得出来た点が疑問なのですよね
ockeghem

2020/08/04 09:17

フォームにて {% csrf_token %} と指定していますよね。このフォームを受け取るレスポンスでクッキーにCSRFトークンがセットされています。
study_111

2020/08/04 09:24 編集

ご返信ありがとうございます。 いえ、Djangoのテンプレートエンジンは使用しておらず「{% csrf_token %}」こちらを使用せずに、JavaScriptのみ「Cookies.get('csrftoken');」でCSRFトークンの生成がなされたといった形です。
ockeghem

2020/08/04 09:35

それはありえないので、いったんクッキーをクリアした上で、ブラウザの開発ツール等を用いてレスポンスを観察すれば、どこでクッキーがセットされているかが分かります。クッキーはJavaScriptでもセットできますが、CSRFトークンという性質上サーバー側で発行していると思います。
study_111

2020/08/04 10:00

やはり、クッキーはサーバー側での発行になりますよね... クッキーをクリアするなどしてどこで発行されているか調べてみたいと思います
study_111

2020/08/04 10:17 編集

別ブラウザで試してみましたら、「undefined」となりました。 そうなりますと、どこかで「csrfトークン」がサーバー側で発行し、返されていたのかもしれないですね。 ですが、取り敢えずはjs-cookieを使用したクッキー生成の疑問を解決することが出来ました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問