get_magic_quotes_gpc()関数を使って
magic_quotes_gpcの設定がONの場合、
入力フォームの情報(配列)に対して以下のようなエスケープ処理が施される。
「" → ¥"」「' → \'」「¥ → ¥¥」
stripslashes()関数でバックスラッシュを取り除く。
さらにhtmlspecialchars()関数によってHTML特殊文字は以下のように処理される。
「& → &」「" → "」「' → '」「< → <」「> → >」
このことを加味して
入力フォームの文字には危険が潜んでいるので
エスケープ処理を施す。
以下、POST型とGET型の記述。
if ($_SERVER["REQUEST_METHOD"] == "POST") {
foreach($_POST as $key => $value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
$value = htmlspecialchars($value);
$_POST[$key] = $value;
}
}
if ($_SERVER["QUERY_STRING"] != "") {
foreach($_GET as $key => $value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
$value = htmlspecialchars($value);
$_GET[$key] = $value;
}
}
※magic_quotes_gpcはPHP 5.3.0で非推奨になったので設定はOFFが推奨。
※htmlspecialchars()によって逆に文字列が崩れてしまい、ログインフォームやDB接続などがうまくいかなくなることもあるので、状況に応じてカットする。
0 件のコメント:
コメントを投稿