$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" />
答案 0 :(得分:7)
是的,还应该使用htmlspecialchars
- 您首先将网址编码为网址安全,然后将其构建为HTML属性,即“
使用这两种编码后,再也无法在您的结尾处注入任意代码,因此如果仍存在任何风险,他们将继续使用Google结束。因此,您可以认为此代码是安全的。
答案 1 :(得分:3)
没有魔杖 PHP功能可以保护您免受所有人伤害。每一项保护都是100%安全的,直到它被攻击为止。您只需要了解您的网站在何处以及如何被黑客入侵,并每天改进您的保护。
您可以从article about XSS prevention获得一些有趣的提示。
同样来自php.net urlencode documentation:
<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>
答案 2 :(得分:0)
urlencode()
不应用于保护XSS。 htmlspecialchars()
是要走的路,但你永远不会安全。