1

PDO プリペアード ステートメントが SQL インジェクションから私を救うことができるかどうか疑問に思っていますか?

例: $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

挿入したいデータ

$data = array( 'name' => $userInput_1, 'addr' => $userInput_2, 'city' => $userinput_3 );

たとえば、$userInput_2 は SLQ INJECTION です。

$STH = $DBH->("INSERT INTO 人々 (名前、住所、都市) の値 (:名前、:住所、:都市)");

この場合、実行後はどうなりますか?

$STH->execute($data);

ありがとう!

4

1 に答える 1

0

すべての入力は適切にエスケープされ、引用されます。したがって、PDO の準備/実行を使用すると、SQL インジェクションを防ぐことができます。

PHPマニュアルから:

異なるパラメーター値で複数回発行されるステートメントに対して PDO::prepare() および PDOStatement::execute() を呼び出すと、ドライバーがクエリ プランのクライアント側および/またはサーバー側のキャッシュをネゴシエートできるようになり、アプリケーションのパフォーマンスが最適化されます。パラメータを手動で引用する必要がなくなるため、SQL インジェクション攻撃を防ぐのに役立ちます

于 2012-08-16T12:39:24.573 に答える