質問編集履歴

3

指摘に従いタイトルを修正

2021/12/29 03:09

投稿

sandalwalk
sandalwalk

スコア77

test CHANGED
@@ -1 +1 @@
1
- ajaxでCSRFを使いPOSTする方法(flask)
1
+ ajaxでCSRFトークンヘッダーに設定しPOSTする方法(flask)
test CHANGED
File without changes

2

エラーのログを表記

2021/12/29 03:09

投稿

sandalwalk
sandalwalk

スコア77

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,14 @@
1
1
  jinjaファイル内で記述したjavascriptで画像データを取得後、CSRF対策を行いながらflaskにajaxでPOST送信したいと考えています。以下のコードでajaxのヘッダーにCSRFトークンを設定したいのですが、400(BAD REQUEST)とエラーが出てしまいます。ヘッダーの設定方法は[このサイト](https://readouble.com/laravel/5.1/ja/routing.html)を参考にしました。
2
+
3
+ エラーの内容:
4
+
5
+ jquery.min.js:formatted:4210 POST http://127.0.0.1:5000/image_base/24 400 (BAD REQUEST)
6
+
7
+ jquery.min.js:formatted:4210の内容:(この箇所で failed to load resource: server responded with a status 400と表示されています)
8
+
9
+ g.send(b.hasContent && b.data || null),
10
+
11
+
2
12
 
3
13
  質問:
4
14
 
@@ -38,6 +48,8 @@
38
48
 
39
49
  ```python
40
50
 
51
+ #/image_base
52
+
41
53
  if request.method == "POST":
42
54
 
43
55
  enc_data = request.form['image']

1

エラーの状況を変更。質問を要約しました。

2021/12/28 02:39

投稿

sandalwalk
sandalwalk

スコア77

test CHANGED
@@ -1 +1 @@
1
- javascriptデータをCSRFでflaskにPOSTする方法
1
+ ajaxでCSRFを使いPOSTする方法(flask)
test CHANGED
@@ -1,8 +1,10 @@
1
- jinjaファイル内で記述したjavascriptで画像データを取得後、CSRF対策を行いながらflaskにPOST送信したいと考えています。以下のコードでファイル送信はできる状態です。一方で、この方法で本当にCSRF対策が出来てかを確認る方法分からず困っています。
1
+ jinjaファイル内で記述したjavascriptで画像データを取得後、CSRF対策を行いながらflaskにajaxでPOST送信したいと考えています。以下のコードでajaxヘッダーにCSRFトークンを設定したいのすが、400(BAD REQUEST)とエラーが出しまいます。ヘッダーの設定方法は[このサイト](https://readouble.com/laravel/5.1/ja/routing.html)を参考にしました。
2
2
 
3
- 良く分からないのは、flask側でPOSTされてきたデータのヘッダー名称(下の場合、X-CSRF-TOKEN)を読み取って、自動的にCSRF対策をしてくれるのか、等の点です。SECRET_KEY = "xxx"の設定と、jinjaファイル内に以下の様にcsrf_tokenを設定し、以下のjavascriptでPOST送信すればCSRFチェックは行われているでしょうか。
3
+ 質問:
4
4
 
5
+ ①ヘッダーの設定方法に誤りがあるでしょうか。
5
6
 
7
+ ②POSTを受け取る側のflask内でCSRFに関するチェックを行う必要があるでしょうか。
6
8
 
7
9
  ```HTML
8
10
 
@@ -28,11 +30,7 @@
28
30
 
29
31
  type: "POST",
30
32
 
31
- headers:{
32
-
33
- 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
33
+ headers:{'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}、
34
-
35
- },
36
34
 
37
35
  data:{"image": response},
38
36