2016-08-07 4 views
-1

のように、ユーザからの入力を受信したとき、あなたがはhtmlspecialchars()を使用する場合:SELECTクエリでプリペアドステートメントを使用することは必須ですか?

$email = htmlspecialchars($_POST['email']); 

クエリがちょうどSELECT 1であれば、あなたが準備されたステートメントを使用する必要がありますか?

+3

はい]を参照してください。常に。次。 – Strawberry

+0

リンゴとオレンジを混ぜています。 ['htmlspecialchars()'](http://php.net/manual/en/function.htmlspecialchars.php)は入力とは関係ありません。正しいHTML出力を生成するために使用されます。 MySQLと準備された文は、入力、出力、または 'htmlspecialchars()'とは何ら関係しません。準備された 'SELECT'文が、文字列を結合することによって構築されたクエリ(文字列がどこに由来していても)よりも優れている理由はたくさんあります。 [SQLインジェクション](https://en.wikipedia.org/wiki/SQL_injection)を避けることは、その1つ(そしておそらく最も重要です)です。 – axiac

答えて

0

常に準備文を使用する必要があります。ここexempleです: ユーザーは次のように入力した場合:

"105 or 1=1" 

htmlspecialchars()機能がそれに何もしません。 クエリは次のようになります。

SELECT * FROM Users WHERE UserId = 105 or 1=1 

このdoc

関連する問題