以下のコードを見てください。
$username = $_POST['username'];
$_SESSION['user_name'] = $username;
mysql_real_escape_string()
値を設定している間も関数を使用する必要があり$username
ますか? 私がしなければ、ここに脅威はありますか?
注意: MySQL を使用したいときに PDO を使用しました。
以下のコードを見てください。
$username = $_POST['username'];
$_SESSION['user_name'] = $username;
mysql_real_escape_string()
値を設定している間も関数を使用する必要があり$username
ますか? 私がしなければ、ここに脅威はありますか?
注意: MySQL を使用したいときに PDO を使用しました。
いいえ、そこでエスケープする必要はありません。特定の文字が特別な意味を持つ他のテキストと連結する場合にのみ、テキストをエスケープする必要があります。The Great Escapism (または、テキスト内のテキストを操作するために知っておくべきこと)を参照してください。
データベースに入力する文字をエスケープする場合にのみ使用してください。
Mysql_real_escape_string() はセキュリティ目的で使用されるため、ユーザーは SQL インジェクションを実行できませんでした。データベースに$_SESSION['user_name']
orを使用していない場合は、使用する必要はありません。$username
ここで詳細を読むことができます - http://php.net/manual/en/function.mysql-real-escape-string.php
mysql_real_escpae_string() は、各特殊文字にバックスラッシュを追加します。
また、SQL インジェクションの例のいくつかをチェックして、それがどのように行われたか、および mysql_real_escape_string() が正確に何を妨げているかを理解する必要があります - http://www.unixwiz.net/techtips/sql-injection.html。
セッションデータはサーバー上でのみ操作できるため、必要はありません。
クエリで使用されるデータがあり、エスケープが必要な文字が含まれていることがわかっている場合は、それが確実に行われるようにする必要があります。
「OR 1 = 1」のような任意のqry言語を含むセッションに保存する値は、基本的にアプリケーション設計のIMOが悪いことに起因します.しないでください。