回答編集履歴

1

Shift_JISを使っているケースについて追記しました

2019/05/03 23:32

投稿

ockeghem
ockeghem

スコア11701

test CHANGED
@@ -15,3 +15,43 @@
15
15
 
16
16
 
17
17
  [https://www.ipa.go.jp/security/vuln/websecurity.html](https://www.ipa.go.jp/security/vuln/websecurity.html)
18
+
19
+
20
+
21
+ ---
22
+
23
+
24
+
25
+ 「引用された4行に関してはSQLインジェクション脆弱性はありません」と書きましたが、状況によってはSQLインジェクションになる可能性がゼロではありません。
26
+
27
+ 以下のブログ記事に書いたような状況が過去には(PHPのバージョンが古い場合)ありました。
28
+
29
+
30
+
31
+ [ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション)](https://blog.tokumaru.org/2010/07/pdo-shiftjis-sqli.html)
32
+
33
+
34
+
35
+ 当該ブログからSQL呼び出しの箇所を引用しますが、ご質問のものとほぼ同じです。バインドの仕方が違いますが、そこが原因ではありません。
36
+
37
+
38
+
39
+ ```
40
+
41
+ $sth = $dbh->prepare("select * from test WHERE name=?");
42
+
43
+ $sth->setFetchMode(PDO::FETCH_NUM);
44
+
45
+ $name = ...
46
+
47
+ $sth->execute(array($name));
48
+
49
+ ```
50
+
51
+
52
+
53
+ なので、このような質問をされる場合は、もっと広い範囲でソースコードを示していただいた方が良いアドバスができると思います。
54
+
55
+
56
+
57
+ ただし、この問題はプログラム内部で文字エンコーディングとしてShift_JISを使っているケースでのみ発生するので、さすがに現在、そのような状況である可能性は極めて低いと思います。