質問編集履歴

2

一部コード追加

2018/04/21 06:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- 特殊文字エスケープ、https化、空でデータベースに接続しない、空入力はエラー表示、sqlインジェクション対策、<input> タグのaccept="audio/mpeg"属性指定、はやってみたのですが他にも気をつけるべき点が知りたいです。
13
+ 特殊文字エスケープ、https化、空でデータベースに接続しない、空入力はエラー表示、sqlインジェクション対策、<input> タグのaccept="audio/mpeg"属性指定、CSRF対策はやってみたのですが他にも気をつけるべき点が知りたいです。
14
14
 
15
15
 
16
16
 
@@ -26,6 +26,12 @@
26
26
 
27
27
 
28
28
 
29
+ //今回はセッションをセキュリティ対策で使用する
30
+
31
+ session_start();
32
+
33
+
34
+
29
35
  // 投稿画面
30
36
 
31
37
 
@@ -70,7 +76,13 @@
70
76
 
71
77
  $audio = "";
72
78
 
73
-
79
+ $token = "";
80
+
81
+
82
+
83
+ // token使って重複防止(CSRF対策)
84
+
85
+ $token = (string)filter_input(INPUT_POST, 'token');
74
86
 
75
87
 
76
88
 
@@ -156,6 +168,14 @@
156
168
 
157
169
 
158
170
 
171
+ if($token === ""){
172
+
173
+ $errors['token'] = "もう一度やり直してください。";
174
+
175
+ }
176
+
177
+
178
+
159
179
  }
160
180
 
161
181
 
@@ -220,7 +240,7 @@
220
240
 
221
241
  <head>
222
242
 
223
- <title>ログイン画面</title>
243
+ <title>投稿画面</title>
224
244
 
225
245
  </head>
226
246
 
@@ -250,8 +270,6 @@
250
270
 
251
271
 
252
272
 
253
-
254
-
255
273
  <p>タイトル<br></p>
256
274
 
257
275
  <input type="text" name="title">
@@ -260,8 +278,6 @@
260
278
 
261
279
 
262
280
 
263
-
264
-
265
281
  <p>本文<br></p>
266
282
 
267
283
  <input type="text" name="body_text">
@@ -290,6 +306,14 @@
290
306
 
291
307
  <input type="submit" name = "submit" value="確認">
292
308
 
309
+
310
+
311
+ <!--$tokenを使って重複を防止するタグを埋め込む-->
312
+
313
+ <input type="hidden" name="token" value="<?=h(sha1(session_id()))?>">
314
+
315
+
316
+
293
317
  </form>
294
318
 
295
319
 

1

一部追記

2018/04/21 06:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -246,7 +246,9 @@
246
246
 
247
247
 
248
248
 
249
- <form action = "" method = "POST">
249
+ <form action = "" method = "POST" enctype="multipart/form-data">
250
+
251
+
250
252
 
251
253
 
252
254