質問編集履歴
2
一部コード追加
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>
|
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
一部追記
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>
|