1

さまざまな mysql クエリで、クエリ文字列の最後の部分は次のとおりです。

" WHERE UserID = " . $AccID

どこ

$AccID = $_SESSION['UID'];

UserID は、db の特定のテーブルにある bigint 列です。

したがって、私の質問は次のとおりです。安全のために、$AccIDこのようにエスケープする必要GetSQLValueString($AccID, "text")がありますか、それともユーザー入力から取得されていないため、その必要はありませんか?

ps$_SESSION['UID']は、認証が成功した後、ログイン手順中に設定されます

4

1 に答える 1

3

はい、あなたはそれを逃れるべきです。$_SESSIONクエリに挿入する前に(他の目的で使用する場合があります)、データベースをエスケープしないでください。

最善の策は、文字列の連結によってクエリを常にエスケープして構築するのではなく、パラメータ化されたSQLを使用することです。PDOに慣れてください。より良い世界のために

于 2012-05-05T21:08:40.317 に答える