5

重複の可能性:
Php PDO::bindParam データ型..どのように機能しますか?

たとえば、次の準備済みステートメントがあるとします。

$sth = $dbh->prepare('SELECT `name` FROM `user` WHERE `user_id` = :user_id');

次のように user_id パラメータをバインドできます。

$sth->bindValue(':user_id', $user_id_value);

そして、SQL インジェクションからも安全です。

ただし、bindValue() は、data_type と呼ばれるオプションのパラメーターでもあり、明示的なデータ型を設定できます。例:

$sth->bindValue(':user_id', $user_id_value, PDO::PARAM_INT);

これにより、user_id が整数になると述べることができます。

私の質問は次のとおりです。SQL インジェクションの有無にかかわらず安全な場合、bindValue で data_type パラメーターを使用するのはなぜですか? データの整合性を強制するためにありますか? 事前にデータを検証している場合、その使用について心配する必要はありますか? 私が考えていなかった、それを使用することの他の利点はありますか?

4

1 に答える 1

-1

基本的に - はい。data_types を強制することは良いことです。

インジェクションに対する保護を想定しないでください。ずっと前に、バックティックや引用符などに utf8 コードを使用したインジェクションについて詳しく説明したブログ記事を見ました。これはエスケープされていませんが、単一の文字として評価されたため、挿入が許可されました。

これは対処されていないと言っているわけではありませんし、脆弱であると言っているわけでもありません。

于 2012-09-07T11:41:04.117 に答える