回答編集履歴
3
用語訂正
test
CHANGED
@@ -54,4 +54,4 @@
|
|
54
54
|
|
55
55
|
|
56
56
|
|
57
|
-
(tanatさんの御指摘の通り、単純なエスケープではSQL対策として不備があるので、PDOを尊重してプレース
|
57
|
+
(tanatさんの御指摘の通り、単純なエスケープではSQL対策として不備があるので、PDOを尊重してプレースホルダを用いたコードに改善しました。)
|
2
PDO接続を尊重しセキュリティー対策したコードに改良した。
test
CHANGED
@@ -32,26 +32,26 @@
|
|
32
32
|
|
33
33
|
$siteiid = 1010;
|
34
34
|
|
35
|
+
|
36
|
+
|
35
|
-
$sql =
|
37
|
+
$sql = 'SELECT * FROM chatlog WHERE id = :id';
|
38
|
+
|
39
|
+
$stmt = $dbh->prepare($sql);
|
40
|
+
|
41
|
+
$stmt->bindValue(':id', $siteiid, PDO::PARAM_INT);
|
42
|
+
|
43
|
+
$stmt->execute();
|
44
|
+
|
45
|
+
while( $result = $sth->fetch(PDO::FETCH_ASSOC) ){
|
46
|
+
|
47
|
+
printf("%d|%d|%d\n", $result['id'], $result['name'], $result['log']);
|
48
|
+
|
49
|
+
}
|
36
50
|
|
37
51
|
```
|
38
52
|
|
39
53
|
のようなSQLでの指定で取り出します。
|
40
54
|
|
41
|
-
もし複数行ある場合には
|
42
55
|
|
43
|
-
```
|
44
56
|
|
45
|
-
$rows = "";
|
46
|
-
|
47
|
-
|
57
|
+
(tanatさんの御指摘の通り、単純なエスケープではSQL対策として不備があるので、PDOを尊重してプレースフォルダを用いたコードに改善しました。)
|
48
|
-
|
49
|
-
$rows .= $result['id'].' '.$result['name'].' '.$result['log'].'<br>';
|
50
|
-
|
51
|
-
}
|
52
|
-
|
53
|
-
print($rows);
|
54
|
-
|
55
|
-
```
|
56
|
-
|
57
|
-
のような形式で取り出します。
|
1
SQLインジェクション対策を補強
test
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
$siteiid = 1010;
|
34
34
|
|
35
|
-
$sql = "SELECT * from chatlog where id = '".$siteiid."'";
|
35
|
+
$sql = "SELECT * from chatlog where id = '".htmlspecialchars($siteiid)."'";
|
36
36
|
|
37
37
|
```
|
38
38
|
|