質問編集履歴
1
修正
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
|
+
よろしくお願いいたします。
|