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

質問編集履歴

1

修正

2020/01/03 06:09

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,13 +1,15 @@
1
1
  php の PDO を使用する際、`PDO::ATTR_EMULATE_PREPARES => false`のオプションをつけることが推奨されている記事を(書籍/web 問わず)多く見かけます。
2
2
 
3
- プリペアドステートメントの本来の目的は、バインド機構によるパフォーマンス改善だと思いますが、セキュリティ対策としてバインド機構を用いる場合、エミュレーションを off にすることは、多くの場合、パフォーマンスを劣化させます。
4
-
5
3
  エミュレーションを off にする推奨理由は、概ね以下の理由でした。
6
4
  ・charset の不適切な取り扱い対策(`SET NAMES`とセットで語られる)
7
5
  ・複文対策
8
6
 
9
7
  php 7 系では、上記に対しては対策が完了しており、現行バージョンでは、`PDO::ATTR_EMULATE_PREPARES`のオプションは`true`で良いのではないかと考えます。
10
8
 
9
+ プリペアドステートメントの本来の目的は、バインド機構によるパフォーマンス改善だと思いますが、セキュリティ対策としてバインド機構を用いる場合、エミュレーションを off にすることは、多くの場合、パフォーマンスを劣化させます。
10
+
11
11
  database driver レベルの問題がある場合は、安全性が損なわれることがありそうですが、ざっと検索した範囲では問題は無いように思います。
12
12
 
13
+ 現在も、`PDO::ATTR_EMULATE_PREPARES`を`false`にすることがセキュリティ的に推奨されるのでしょうか?
14
+
13
-
15
+ よろしくお願いいたします。