urlencode()是否可以防止XSS

时间:2013-05-02 12:37:50

标签: php xss

$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" />

3 个答案:

答案 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()是要走的路,但你永远不会安全。