$address并且$cityState是用户提供的,存储在DB中,并且可供其他人查看,如下所示.是否存在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" />
Run Code Online (Sandbox Code Playgroud)
是的,htmlspecialchars也应该使用 - 您首先将URL编码为URL安全,然后将其构建为HTML属性,这需要HTML样式的转义.
使用这两种编码后它不再可能在注入任意代码的规模结束,因此,如果任何风险仍然存在他们是在谷歌的结束.因此,您可以认为此代码是安全的.
没有什么神奇的PHP 函数可以保护您免受所有侵害。每一项保护措施在被黑客攻击之前都是 100% 安全的。您只需要了解您的网站可能从何处以及如何被黑客攻击,并每天改进您的保护。
您可以从有关 XSS 预防的文章中获得一些有趣的提示。
同样来自php.net urlencode 文档:
<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>
Run Code Online (Sandbox Code Playgroud)