$address
и $cityState
предоставляется пользователю, хранятся в БД и доступны для других, как показано ниже. Существует ли риск XSS ? Должен ли использоваться htmlspecialchars()
?
<img src="http://maps.google.com/maps/api/staticmap?markers=color:blue|<?php echo(urlencode($address.' '.$cityState));?>&zoom=14&size=400x400&sensor=false" alt="Map" />
Нет никакой волшебной палочки PHP-функции, которая защитит вас от всех. Каждая защита на 100% безопасна до тех пор, пока она не будет взломана. Вам просто нужно понять, откуда и как ваш сайт может быть взломан и улучшить вашу защиту каждый день.
Вы можете получить некоторые интересные советы из статьи о предотвращении XSS .
Также из документации php.net urlencode :
<?php $query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar); echo '<a href="mycgi?' . htmlentities($query_string) . '">'; ?>
Да, также следует использовать htmlspecialchars
– вы сначала кодируете URL-адрес, чтобы быть безопасным URL-адресом, а затем вы строите его в HTML-атрибут, который требует «экранирования в стиле HTML».
После использования обоих кодировок уже невозможно ввести произвольный код на вашем конце шкалы, поэтому, если все риски остаются, они находятся в конце Google. Таким образом, вы можете считать этот код безопасным.
urlencode()
не должен использоваться для защиты от XSS. htmlspecialchars()
– это путь, но вы никогда не будете в безопасности.