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 にはこの側面に関する紹介情報がありません。
この声明は本当ですか?
マスターが混乱を解消できることを願っています。改めてありがとうございます。