質問するログイン新規登録

質問編集履歴

6

並び替え

2020/09/04 09:24

投稿

hasshy
hasshy

スコア102

title CHANGED
File without changes
body CHANGED
@@ -16,13 +16,32 @@
16
16
  ## アプリケーションの概要
17
17
  個人情報を扱うお問い合わせフォームを作りたいと思います。
18
18
 
19
+ ### URL
20
+ フロントエンドから非同期でデータを送受信するのは、入力内容の保存をする時だけです。
21
+ また、コンテンツとAPIはドメインが一緒です。
22
+
23
+ #### サイトコンテンツ
24
+
25
+ URL|概要
26
+ ---|---
27
+ https://example.com/contact|フォーム本体のページ
28
+
29
+ #### API
30
+ POSTのみです。
31
+ GETで閲覧するAPIは実装しません。
32
+
33
+ URL|method|概要
34
+ ---|---|---
35
+ https://example.com/api/contacts|POST|問い合わせ内容を登録します。
36
+
37
+
19
38
  ### ページ構成
20
39
  よくあるフォームの構成です。
21
40
  URL|ページ名|概要
22
41
  ---|---|---
23
- https://example.com/contact/create|入力ページ|フォームで個人情報と問い合わせ内容を入力します。
42
+ /contact/create|入力ページ|フォームで個人情報と問い合わせ内容を入力します。
24
- https://example.com/contact/confirm|確認ページ|入力ページの登録内容を確認、問題なければ登録処理をする(APIで入力された内容を送信)
43
+ /contact/confirm|確認ページ|入力ページの登録内容を確認、問題なければ登録処理をする(APIで入力された内容を送信)
25
- https://example.com/contact/send|完了ページ|登録完了したら完了ページを表示
44
+ /contact/send|完了ページ|登録完了したら完了ページを表示
26
45
 
27
46
  登録データを送信するエンドポイントのAPIは自作です。
28
47
  送信された情報の精査と、実際の登録の処理は実装します。
@@ -40,24 +59,7 @@
40
59
  PHPのLaravelでAPIを実装します。
41
60
  SPAで最初に表示するページに、パラメータを渡す事も出来ます。
42
61
 
43
- ### URL
44
- フロントエンドから非同期でデータを送受信するのは、入力内容の保存をする時だけです。
45
- また、コンテンツとAPIはドメインが一緒です。
46
62
 
47
- #### サイトコンテンツ
48
-
49
- URL|概要
50
- ---|---
51
- https://example.com/|フォーム本体のページ
52
-
53
- #### API
54
- POSTのみです。
55
- GETで閲覧するAPIは実装しません。
56
-
57
- URL|method|概要
58
- ---|---|---
59
- https://example.com/api/contacts|POST|問い合わせ内容を登録します。
60
-
61
63
  ## 所感
62
64
  自分が思いつくセキュリティホールと対策は次の通りです。
63
65
 

5

セキュリティホール追記

2020/09/04 09:24

投稿

hasshy
hasshy

スコア102

title CHANGED
File without changes
body CHANGED
@@ -65,9 +65,12 @@
65
65
 
66
66
  - APIを外部から実行される危険がある(CSRF対策)
67
67
  - APIで送信する個人情報を抜かれる危険性がある。
68
+ - パラメータに有害な情報(SQLインジェクションの誘発など)が入ってくる
68
69
 
69
70
  ### 対策
70
71
  - APIを外部から実行される危険がある(CSRF対策)
71
72
  -> バックエンドでトークンを発行してページ読み込み時に渡し、APIで登録内容を送信時にトークンも一緒に送信、認証する
72
73
  - APIで送信する個人情報を抜かれる危険性がある
73
- -> HTTPSなのでそもそも暗号化されている
74
+ -> HTTPSなのでそもそも暗号化されている
75
+ - パラメータに有害な情報(SQLインジェクションの誘発など)
76
+ -> LaravelのクエリビルダーはPDO::ATTR_EMULATE_PREPARESが有効なので、対策はされている

4

追記

2020/09/04 05:17

投稿

hasshy
hasshy

スコア102

title CHANGED
File without changes
body CHANGED
@@ -24,7 +24,7 @@
24
24
  https://example.com/contact/confirm|確認ページ|入力ページの登録内容を確認、問題なければ登録処理をする(APIで入力された内容を送信)
25
25
  https://example.com/contact/send|完了ページ|登録完了したら完了ページを表示
26
26
 
27
- APIは自作です。
27
+ 登録データを送信するエンドポイントのAPIは自作です。
28
28
  送信された情報の精査と、実際の登録の処理は実装します。
29
29
 
30
30
  ### 開発環境

3

ページ構成追記

2020/09/03 16:15

投稿

hasshy
hasshy

スコア102

title CHANGED
File without changes
body CHANGED
@@ -18,11 +18,12 @@
18
18
 
19
19
  ### ページ構成
20
20
  よくあるフォームの構成です。
21
+ URL|ページ名|概要
22
+ ---|---|---
23
+ https://example.com/contact/create|入力ページ|フォームで個人情報と問い合わせ内容を入力します。
24
+ https://example.com/contact/confirm|確認ページ|入力ページの登録内容を確認、問題なければ登録処理をする(APIで入力された内容を送信)
25
+ https://example.com/contact/send|完了ページ|登録完了したら完了ページを表示
21
26
 
22
- 入力ページ|フォームで個人情報と問い合わせ内容を入力します。
23
- 確認ページ|入力ページの登録内容を確認、問題なければ登録処理をする(APIで入力された内容を送信)
24
- 完了ページ|登録完了したら完了ページを表示
25
-
26
27
  APIは自作です。
27
28
  送信された情報の精査と、実際の登録の処理は実装します。
28
29
 

2

修正

2020/09/03 16:14

投稿

hasshy
hasshy

スコア102

title CHANGED
File without changes
body CHANGED
@@ -11,8 +11,7 @@
11
11
  - (後述しますが)自分が思い付いたセキュリティホール以外に、考慮すべき問題点はありますか?
12
12
  また、対策方法はありますか?
13
13
  - [Next.js](https://nextjs.org/)のようなフレームワークでは、セキュリティ対策用のモジュールや関数があるのでしょうか?
14
- 既に用意されているのであれば、フレームワークに準じた方が安全かもしれません。
15
- もちろん、概念として対策方法は知っておくべきだとは思います。
14
+ もちろん、フレームワークに丸投げせず、概念として対策方法は知っておくべきだとは思います。
16
15
 
17
16
  ## アプリケーションの概要
18
17
  個人情報を扱うお問い合わせフォームを作りたいと思います。

1

追記

2020/09/03 16:12

投稿

hasshy
hasshy

スコア102

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
  フォームでは個人情報を扱うので、SPAでのセキュリティについてお伺いしたいです。
3
3
 
4
4
  従来のセッションが分かれているフォームであれば、多少知見がありますので対策が思いつきます。
5
- SPAの場合も従来の対策をそのまま当てはめても問題ないのか経験がなくて判断できません。
5
+ SPAの場合も従来の対策をそのまま当てはめても問題ないのか、SPA実装の経験がなくて判断できません。
6
6
 
7
7
  セキュリティ周りについては、思いつく対策だけでは十分でない可能性もあり、是非ご意見をいただきたいです。
8
8