1

以下のコードを見てください。

$username = $_POST['username'];
$_SESSION['user_name'] = $username;

mysql_real_escape_string()値を設定している間も関数を使用する必要があり$usernameますか? 私がしなければ、ここに脅威はありますか?

注意: MySQL を使用したいときに PDO を使用しました。

4

4 に答える 4

5

いいえ、そこでエスケープする必要はありません。特定の文字が特別な意味を持つ他のテキストと連結する場合にのみ、テキストをエスケープする必要があります。The Great Escapism (または、テキスト内のテキストを操作するために知っておくべきこと)を参照してください。

于 2012-07-24T07:31:27.717 に答える
4

データベースに入力する文字をエスケープする場合にのみ使用してください。

于 2012-07-24T07:30:46.730 に答える
3

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

于 2012-07-24T07:31:04.800 に答える
0

セッションデータはサーバー上でのみ操作できるため、必要はありません。

クエリで使用されるデータがあり、エスケープが必要な文字が含まれていることがわかっている場合は、それが確実に行われるようにする必要があります。

「OR 1 = 1」のような任意のqry言語を含むセッションに保存する値は、基本的にアプリケーション設計のIMOが悪いことに起因します.しないでください。

于 2012-07-24T07:34:05.570 に答える