4

$address并且$cityState是用户提供的,存储在数据库中,可供其他人查看,如下所示。是否存在XSS风险?应该htmlspecialchars()也用上吧?

<img src="http://maps.google.com/maps/api/staticmap?markers=color:blue|<?php echo(urlencode($address.' '.$cityState));?>&amp;zoom=14&amp;size=400x400&amp;sensor=false" alt="Map" />
4

3 回答 3

7

是的,htmlspecialchars也应该使用 - 您首先将 URL 编码为 URL 安全,然后将其构建为 HTML 属性,这“需要”HTML 样式的转义。

使用这两种编码后,您将无法再在的秤端注入任意代码,因此如果仍然存在任何风险,它们就在 Google 的一端。因此,您可以认为此代码是安全的。

于 2013-05-02T12:43:40.013 回答
3

没有魔法棒PHP 功能可以保护您免受一切伤害。每个保护措施都是 100% 安全的,直到它被黑客入侵。您只需要了解您的网站从何处以及如何被黑客入侵,并每天改善您的保护。

您可以从有关 XSS 预防的文章中获得一些有趣的提示。

也来自php.net urlencode 文档

<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>
于 2013-05-02T12:57:10.203 回答
0

urlencode()不应用于保护 XSS。htmlspecialchars()是要走的路,但你永远不会安全。

于 2013-05-02T12:44:20.250 回答