ホームページ  >  に質問  >  本文

mysql プリペアドステートメントのインジェクションを妨げる根本的な処理の問題について

PHP の PDO オブジェクトまたは STMT オブジェクトは、インジェクションを含む SQL ステートメントを実行します。
MYSQL ログを確認すると、2 番目の一重引用符のみがエスケープされていることがわかりました。
SELECT * FROM admin WHERE user = '123\' または 1 = 1 #'
C などの言語を使用して libmysql.dll を呼び出したネイティブ API ログは次のようになります。
select * from admin where user = X'313233'
処理方法はパラメーターを次のように変換します。 16 進数

これらはすべて前処理ですが、基礎となる処理に 2 つの異なる方法があるのはなぜですか?

前処理関数は、MYSQL のネイティブ API に基づいて PHP によってカプセル化されていますか?

Baidu のもう 1 つの声明は、PHP の前処理は疑似パラメータ クエリ (シミュレーション前処理) であるということですが、Baidu にはこの側面に関する紹介情報がありません。
この声明は本当ですか?

マスターが混乱を解消できることを願っています。改めてありがとうございます。

phpcn_u5077phpcn_u50772706日前1751

全員に返信(2)返信します

  • 清晨的那一抹阳光照耀在我的脸上

    清晨的那一抹阳光照耀在我的脸上2017-06-15 22:31:56

    phpマスターは皆最下層を研究しています

    返事
    0
  • phpcn_u5077

    私は達人ではありませんが、奇妙で興味深い物事の真相に迫るのが好きです。

    phpcn_u5077 · 2017-06-16 07:31:17
  • shuffle

    shuffle2017-06-15 22:03:18

    何を言っているのか分かりませんが、高級感があります

    返事
    0
  • phpcn_u5077

    。。。。。。

    phpcn_u5077 · 2017-06-16 07:33:44
  • キャンセル返事