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

回答編集履歴

1

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

2019/05/03 23:32

投稿

ockeghem
ockeghem

スコア11710

answer CHANGED
@@ -6,4 +6,24 @@
6
6
 
7
7
  簡単に使える診断文字列としては、IPAが公開している「ウェブ健康診断仕様」があり、以下のURLからダウンロードできます。
8
8
 
9
- [https://www.ipa.go.jp/security/vuln/websecurity.html](https://www.ipa.go.jp/security/vuln/websecurity.html)
9
+ [https://www.ipa.go.jp/security/vuln/websecurity.html](https://www.ipa.go.jp/security/vuln/websecurity.html)
10
+
11
+ ---
12
+
13
+ 「引用された4行に関してはSQLインジェクション脆弱性はありません」と書きましたが、状況によってはSQLインジェクションになる可能性がゼロではありません。
14
+ 以下のブログ記事に書いたような状況が過去には(PHPのバージョンが古い場合)ありました。
15
+
16
+ [ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション)](https://blog.tokumaru.org/2010/07/pdo-shiftjis-sqli.html)
17
+
18
+ 当該ブログからSQL呼び出しの箇所を引用しますが、ご質問のものとほぼ同じです。バインドの仕方が違いますが、そこが原因ではありません。
19
+
20
+ ```
21
+ $sth = $dbh->prepare("select * from test WHERE name=?");
22
+ $sth->setFetchMode(PDO::FETCH_NUM);
23
+ $name = ...
24
+ $sth->execute(array($name));
25
+ ```
26
+
27
+ なので、このような質問をされる場合は、もっと広い範囲でソースコードを示していただいた方が良いアドバスができると思います。
28
+
29
+ ただし、この問題はプログラム内部で文字エンコーディングとしてShift_JISを使っているケースでのみ発生するので、さすがに現在、そのような状況である可能性は極めて低いと思います。