6

タイトルが示すように、bind_param() を使用するときにユーザー入力をエスケープする必要がありますか、それとも内部で行われますか?

ありがとうございました。

4

2 に答える 2

10

いいえ、パラメーターをバインドするときに SQL インジェクションから保護するためにデータをエスケープする必要はありません。

ただし、これにより、上記のデータの検証が免除されるわけではありません。

パラメーターをバインドする場合、(内部的またはその他の方法で) エスケープは実行されません。SQL ステートメントはパラメーター プレースホルダーを使用して準備され、実行時にこれらの値が渡されます。

データベースはパラメータが何であるかを認識しており、SQL 値の補間とは対照的に、パラメータを適切に処理します。

于 2011-09-13T23:13:27.997 に答える
6

いいえ。

これを引用するには

http://mysql.lamphost.net/tech-resources/articles/4.1/prepared-statements.html

「通常、アドホック クエリを処理する場合、ユーザーから受け取ったデータを処理するときは非常に注意する必要があります。これには、一重引用符、二重引用符など、必要なすべての問題文字をエスケープする関数を使用する必要があります。 、およびバックスラッシュ文字。準備されたステートメントを処理する場合、これは不要です。 データの分離により、MySQL はこれらの文字を自動的に考慮することができ、特別な関数を使用してエスケープする必要はありません。"

于 2011-09-13T23:14:14.913 に答える