Я работаю над некоторыми вопросами безопасности, и php дает мне странное поведение.Не могли бы вы помочь мне выяснить, что происходит?:)
Итак, у меня есть массив входных данных, например,
$first_name = "<script>alert();</script>";
$middle_name = 'Robert';
$last_name = 'Smith';
$username = 'testusername1';
$email = "testemail@mail.com";
$password = 'banana1';
, и я проверяю их на XSS, используя htmlspecialchars, вот так.
$first_name = htmlspecialchars($first_name, ENT_QUOTES, 'UTF-8');
Это прекрасно работает, чтобы остановить выполнение сценария в $ first_name.
Однако вставьте этот код в цикл foreach, и предупреждение javascript будет запущено.
Вот мой текущий цикл foreach (не работает должным образом)
$strings =
array($first_name,$middle_name,$last_name,$username,$email,$password);
foreach($strings as $string) {
$string = htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
}
Я не уверен, что мне здесь не хватает.Я думаю, это как-то связано с присвоением преобразованной строки обратно в массив?Но это звучит так запутанно, что просто не похоже на правильный ответ.ИДК.
Спасибо за помощь.
Андрей