Security

PHPの各PDOドライバは、静的プレースホルダ/動的プレースホルダのどちらを使用しているのか?

投稿日:2015年4月25日 更新日:

今のところの結論

  • データベースにも依るだろうが、そもそもプリペアドステートメントが使えないSQL文法がある。なので、「PDOドライバ毎に静的プレースホルダ/動的プレースホルダのどちらを使っているか」というのは問題設定に無理があるようだ。「どのPDOドライバも、どちらのプレースホルダも使っている」と思っておくのが妥当なのかもしれない。もしそうであるなら、「セキュリティ的に静的プレースホルダより信頼性の劣る動的プレースホルダを完全に避けるのは難しい」ということになりそうだ。

以下は、上記の結論を書く前に少し調査した内容だが記録のために残しておく。

MySQL (PDO_MYSQL)の場合

PDO_MYSQL は、MySQL 4.1 以降に存在するプリペアドステートメントを ネイティブにサポートしているという利点があります。 古いバージョンの mysql クライアントライブラリを使用している場合は、 PDO がこの機能をエミュレートします。

引用元:PHP: MySQL (PDO) – Manual

  • 上記では、プリペアドステートメントが使えない SQL文法については触れられていない。PDO内でエミュレートしている?

その他のデータベース用ドライバ

  • 各データベース用ドライバが、データベースに実装されているプリペアドステートメント機能を利用しているのかどうかは、php.net に載っていない?見付からなかった。

参考

  • PHP: PDO ドライバ – Manual
  • MySQL :: MySQL 5.7 Reference Manual :: 13.5 SQL Syntax for Prepared Statements
    • https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html
    • “SQL Syntax Allowed in Prepared Statements” という項目がある。
  • 漢(オトコ)のコンピュータ道: SQLインジェクション対策に正解はない

📂-Security
-

執筆者:labo


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

OS コマンド・インジェクション by IPA「安全なウェブサイトの作り方 第7版」

安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構の、「OS コマンド・インジェクション」から一部抜粋する。(この資料はPDFでしか提供されていない) 目次注意が必要なウェブサイト …

no image

セッション管理の不備 by IPA「安全なウェブサイトの作り方 第7版」

安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構の、「セッション管理の不備」から一部抜粋する。(この資料はPDFでしか提供されていない) 目次セッションIDの推測セッションIDの盗用 …

no image

IPA の「CMSを用いたウェブサイト構築における情報セキュリティ対策 4つのポイント」の重要な部分を抜粋する

目次1. はじめに2. CMS を構築されたウェブサイトを狙う攻撃と対策2.1. 脆弱性やウェブサイトの運用上の不備を悪用2.1.1. ソフトウェアの脆弱性2.1.2. 運用上の不備2.2. 認証を突 …

no image

ウェブサイトの安全性向上のための取り組み – パスワードに関する対策 by IPA「安全なウェブサイトの作り方 第7版」

ウェブサイトの安全性向上のための取り組み – パスワードに関する対策 by IPA「安全なウェブサイトの作り方 第7版」 パスワードに関する対策 初期パスワードは、推測が困難な文字列で発行 …

no image

HTTP ヘッダ・インジェクション by IPA「安全なウェブサイトの作り方 第7版」

安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構の、「HTTP ヘッダ・インジェクション」から一部抜粋する。(この資料はPDFでしか提供されていない) 目次注意が必要なウェブ …