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

質問編集履歴

2

一部コード追加

2018/04/21 06:31

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  初心者の範囲でやっておくべき対策が知りたいです。
6
6
 
7
- 特殊文字エスケープ、https化、空でデータベースに接続しない、空入力はエラー表示、sqlインジェクション対策、<input> タグのaccept="audio/mpeg"属性指定、はやってみたのですが他にも気をつけるべき点が知りたいです。
7
+ 特殊文字エスケープ、https化、空でデータベースに接続しない、空入力はエラー表示、sqlインジェクション対策、<input> タグのaccept="audio/mpeg"属性指定、CSRF対策はやってみたのですが他にも気をつけるべき点が知りたいです。
8
8
 
9
9
 
10
10
 
@@ -12,6 +12,9 @@
12
12
 
13
13
  <?php
14
14
 
15
+ //今回はセッションをセキュリティ対策で使用する
16
+ session_start();
17
+
15
18
  // 投稿画面
16
19
 
17
20
  /*
@@ -34,7 +37,10 @@
34
37
  $body_text = "";
35
38
  $image = "";
36
39
  $audio = "";
40
+ $token = "";
37
41
 
42
+ // token使って重複防止(CSRF対策)
43
+ $token = (string)filter_input(INPUT_POST, 'token');
38
44
 
39
45
  // エラーメッセージ初期化
40
46
  $errors = array();
@@ -77,6 +83,10 @@
77
83
  $errors['audio'] = "音声が選択されていません。";
78
84
  }
79
85
 
86
+ if($token === ""){
87
+ $errors['token'] = "もう一度やり直してください。";
88
+ }
89
+
80
90
  }
81
91
 
82
92
  //エラーがなかったら該当チェック開始
@@ -109,7 +119,7 @@
109
119
  <!DOCTYPE html>
110
120
  <html>
111
121
  <head>
112
- <title>ログイン画面</title>
122
+ <title>投稿画面</title>
113
123
  </head>
114
124
  <body>
115
125
 
@@ -124,12 +134,10 @@
124
134
 
125
135
  <form action = "" method = "POST" enctype="multipart/form-data">
126
136
 
127
-
128
137
  <p>タイトル<br></p>
129
138
  <input type="text" name="title">
130
139
  <br>
131
140
 
132
-
133
141
  <p>本文<br></p>
134
142
  <input type="text" name="body_text">
135
143
  <br>
@@ -144,6 +152,10 @@
144
152
  <br>
145
153
 
146
154
  <input type="submit" name = "submit" value="確認">
155
+
156
+ <!--$tokenを使って重複を防止するタグを埋め込む-->
157
+ <input type="hidden" name="token" value="<?=h(sha1(session_id()))?>">
158
+
147
159
  </form>
148
160
 
149
161
  </body>

1

一部追記

2018/04/21 06:31

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -122,8 +122,9 @@
122
122
 
123
123
  <h1>投稿画面</h1>
124
124
 
125
- <form action = "" method = "POST">
125
+ <form action = "" method = "POST" enctype="multipart/form-data">
126
126
 
127
+
127
128
  <p>タイトル<br></p>
128
129
  <input type="text" name="title">
129
130
  <br>