-3

各_POSTにaddslashes(htmlentities(...))を配置するにはどうすればよいですか?

if ( isset ( $_POST ) ):
     foreach ( $_POST as $name => $val ) :
           $_POST[$name] = addslashes(htmlentities($val));
     endforeach;
endif;

これは機能しますか?

4

2 に答える 2

1

これは機能しますか?

のように配列が渡されない場合にのみ機能し?name[]=tony&name[]=anthonyます。

そして、なぜあなたはそれをしますか?保護のためにこれを行う場合は、必要な場合にのみこれらの機能を使用する必要があります。

SQLインジェクションが不可能であることを確認する代わりにmysql_real_escape_string()(またはさらに優れたPDO )を使用してください。addslashes()例:

// using mysql_real_escape_string
$sql = "SELECT * FROM user WHERE name = '" . mysql_real_escape_string($name) .  "'";

// using PDO (recommended)
$statement = $pdo->prepare("SELECT * FROM user WHERE name = ?");
$statement->execute(array($name));

XSSを防ぐためhtmlspecialchars()に代わりに使用してください。htmlentities()例:

<input type="text" name="<?php echo htmlspecialchars($name) ?>" />
于 2012-10-11T08:09:31.760 に答える
0

あなたは試さずにこれを求めていますか?私が見る限り、それはうまくいくはずです。

于 2012-10-11T08:08:44.040 に答える