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

回答編集履歴

1

コメントへの返信を追記しました

2019/12/30 04:59

投稿

ockeghem
ockeghem

スコア11710

answer CHANGED
@@ -20,4 +20,23 @@
20
20
  > htmlspecialchars()を使うこともmysqliで接続していた際は使っていましたが、
21
21
  PDOで接続する場合は基本不要だというのが私の解釈です。
22
22
 
23
- htmlspecialcharsはクロスサイトスクリプティング(XSS)対策に必要なもので、mysqliかPDOに関わらず表示の際に必要です
23
+ htmlspecialcharsはクロスサイトスクリプティング(XSS)対策に必要なもので、mysqliかPDOに関わらず表示の際に必要です
24
+
25
+ ---
26
+
27
+ コメントへの返信を追記します。
28
+
29
+ > > どこにSQLインジェクション脆弱性があるかわからない場合はコメント等で質問してください。
30
+ よろしくお願いします。
31
+ DB接続時に文字コードとエミュレーションの指定を接続時にtry,catchの接続部分で脆弱性があると考えました。このあたりをしっかり学習し、対応することで攻撃耐性を持たせるという解釈で合っていますでしょうか?
32
+
33
+ 違います。決定的に間違ってます。SQLインジェクション脆弱性があるのは下記の箇所です。
34
+
35
+ ```PHP
36
+ $user = $con->query("
37
+ SELECT * FROM users
38
+ WHERE id = '$id'
39
+ ");
40
+ ```
41
+
42
+ $id の指定にプレースホルダを使っていないため、ここでSQLインジェクション脆弱性になっています。queryメソッドを禁止したらどうかという提案は、これが理由です。