get_magic_quotes_gpc 関数は、ユーザーが提供したデータにスラッシュを追加するかどうかを決定するために使用されます。これは php.ini 設定ファイルにあります。
Get_magic_quotes_gpc 関数の説明を紹介します。 PHP システム関数である PHP 環境変数 magic_quotes_gpc の値を取得します。
構文: long get_magic_quotes_gpc(void);
戻り値: 長整数
この関数は、PHP 環境設定の変数 magic_quotes_gpc (GPC、Get/Post/Cookie) の値を取得します。 0 を返すとこの機能がオフになることを意味し、1 を返すとこの機能がオンになることを意味します。
この設定がオンになっていない場合は、addslashes() 関数を使用して追加できます。この関数の機能は、データベース クエリ ステートメントで必要な場合に特定の文字の前にバックスラッシュを追加することです。
これらの文字は、一重引用符 (’)、二重引用符 (")、バックスラッシュ ()、および NUL (NULL 文字) です。
デフォルトでは、PHP ディレクティブ magic_quotes_gpc がオンになっており、主にすべての GET、POST、および COOKIE データに対して addslashes() が自動的に実行されます。
magic_quotes_gpc によってエスケープされた文字列に対して addslashes() を使用しないでください。二重エスケープが発生するためです。この状況が発生した場合は、関数 get_magic_quotes_gpc() を使用して検出できます。
データベース攻撃を防ぐための get_magic_quotes_gpc() の正しい使い方
コードは次のとおりです
関数 check_input($value) | |
//スラッシュを削除します
if (get_magic_quotes_gpc()) |
入出力データベースの文字列データは何もできません addslashes() およびtripslashes() の操作では、データは通常どおり表示されます。
このとき入力データに対してaddslashes()を実行すると、
次に、出力時にstripslashes()を使用して余分なバックスラッシュを削除する必要があります。
2.magic_quotes_gpc=offの場合
入力データを処理するにはaddslashes()を使用する必要がありますが、出力のフォーマットにはstripslashes()を使用する必要はありません
addslashes() はバックスラッシュをデータベースに書き込まないため、mysql が SQL ステートメントの実行を完了するのに役立つだけです