-2

これは機能しません。フォームにhtmlを入力すると。たとえば、横罫線を入力すると、$value が strip_tags を介して渡されたにもかかわらず、エコー出力に表示されます。

function sanitizeString($var){
   $var = strip_tags($var);
   $var = htmlentities($var);
   return stripslashes($var);
}

foreach($_POST as $key => $value){
   echo $key."<br>";
   sanitizeString($value);
   echo $value."<br>";
} 
4

2 に答える 2

2

あなたは実際には変わっていません$value。戻り値を捨てています。試してみてください$value = sanitizeString($value);

于 2012-10-30T23:27:35.510 に答える
0

あなたが試すことができます

$_POST = array_map(function ($var) {
    return stripslashes(htmlentities(strip_tags($var)));
}, $_POST);


foreach ( $_POST as $key => $value ) {
    echo "$key = $value <br>";
}

オアベターシル使用filter_var

$_POST = array_map(function ($var) {
    return filter_var($var, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_LOW);
}, $_POST);

違い

$var = "index.php?name=guest<script>alert('attacked')</script>";
var_dump(stripslashes(htmlentities(strip_tags($var))));
var_dump(filter_var($var, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_LOW));

出力

string 'index.php?name=guestalert('attacked')' (length=37)
string 'index.php?name=guestalert(&#39;attacked&#39;)' (length=45)
于 2012-10-30T23:29:29.267 に答える