回答編集履歴
7
追記&訂正
test
CHANGED
@@ -58,7 +58,7 @@
|
|
58
58
|
|
59
59
|
|
60
60
|
|
61
|
-
CSRF 対策トークンのクッキーは上と同じものです(ブラウザを閉じない限り同じクッキーが送信されます)。ログインした際に認証クッキーを受け取って
|
61
|
+
CSRF 対策トークンのクッキーは上と同じものです(ブラウザを閉じない限り同じクッキーが送信されます)。ログインした際に認証クッキーを受け取っていますので、POST 操作で両方送信されています。
|
62
62
|
|
63
63
|
|
64
64
|
|
6
追記
test
CHANGED
@@ -27,3 +27,51 @@
|
|
27
27
|
|
28
28
|
|
29
29
|
[https://docs.microsoft.com/ja-jp/aspnet/web-api/overview/security/preventing-cross-site-request-forgery-csrf-attacks#anti-csrf-and-ajax](https://docs.microsoft.com/ja-jp/aspnet/web-api/overview/security/preventing-cross-site-request-forgery-csrf-attacks#anti-csrf-and-ajax)
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
**【追記】**
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
下の 2021/06/09 15:19 の私のコメントで「ご参考に、あとで、ログイン有り無しの時のクッキーがどうなっているか Fiddler で見た画像を回答欄に貼っておきます」と書いた件です。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
編集画面で編集したあと結果を POST した場面です。__RequestVerificationToken が CSRF 対策トークンのクッキー、.AspNet.ApplicationCookie は認証クッキーです。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
**ログイン無し**
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
ログインしてなくとも CSRF 対策トークンのクッキーは編集画面が表示された際に受け取っていますので、POST すると送信されます。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
![イメージ説明](7d5e5c41733584aa4de08b9f4fe7e196.jpeg)
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
**ログイン有り**
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
CSRF 対策トークンのクッキーは上と同じものです(ブラウザを閉じない限り同じクッキーが送信されます)。ログインした際に認証クッキーを受け取ってうますので、POST 操作で両方送信されています。
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
![イメージ説明](e876d01eef932f86a0b712620dbdc073.jpeg)
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
**hidden のトークン**
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
ちなみに、hidden 要素のトークンは以下の画像の通りです。クッキーの CSRF 対策トークンと異なるのは追加情報が含まれているからです。
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
![イメージ説明](047c3bf3fa3053abdf5ce9792bb82c95.jpeg)
|
5
追記
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
-
ただし、フォームデータを POST するのではなく、例えば、AJAX で JSON 文字列を POST するような場合は、リクエストヘッダを使う方法も用意されているそうです。詳しくは以下の記事を見てください。
|
25
|
+
ただし、フォームデータを POST するのではなく、例えば、AJAX で JSON 文字列を POST するような場合は (hidden は送れない場合は)、リクエストヘッダを使う方法も用意されているそうです。詳しくは以下の記事を見てください。
|
26
26
|
|
27
27
|
|
28
28
|
|
4
追記
test
CHANGED
@@ -19,3 +19,11 @@
|
|
19
19
|
|
20
20
|
|
21
21
|
理由は、それを書いてある Mictosoft のドキュメントは見つけられなかったので不明ですが、普通に考えてサーバーがランダムに生成したトークンをリクエストヘッダに含めるのは無理があるからだと思います。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
ただし、フォームデータを POST するのではなく、例えば、AJAX で JSON 文字列を POST するような場合は、リクエストヘッダを使う方法も用意されているそうです。詳しくは以下の記事を見てください。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
[https://docs.microsoft.com/ja-jp/aspnet/web-api/overview/security/preventing-cross-site-request-forgery-csrf-attacks#anti-csrf-and-ajax](https://docs.microsoft.com/ja-jp/aspnet/web-api/overview/security/preventing-cross-site-request-forgery-csrf-attacks#anti-csrf-and-ajax)
|
3
追記
test
CHANGED
@@ -14,4 +14,8 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
+
hidden です。
|
18
|
+
|
19
|
+
|
20
|
+
|
17
|
-
|
21
|
+
理由は、それを書いてある Mictosoft のドキュメントは見つけられなかったので不明ですが、普通に考えてサーバーがランダムに生成したトークンをリクエストヘッダに含めるのは無理があるからだと思います。
|
2
訂正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
トー
|
9
|
+
トークンはランダムに生成されます。なので、ログインしているか否かに関係なくトークンは発行されます。
|
10
10
|
|
11
11
|
|
12
12
|
|
1
脱字訂正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
ASP.NET MVC の場合も質問者さんが書かれた機能がフレームワークに組み込まれていて、質問 1, 2 はどうなっているかと言う
|
1
|
+
ASP.NET MVC の場合も質問者さんが書かれた機能がフレームワークに組み込まれていて、質問 1, 2 はどうなっているかと言うと、
|
2
2
|
|
3
3
|
|
4
4
|
|