以下是我的代码的简化:
$html = "<a class='myclass' href='/path?arg='" . $_GET['param']. "'>mylink</a>";
今天我正在阅读有关XSS攻击的内容,我认为我的代码处于XSS攻击之下。我不确定,但闻起来如此。
无论如何,如果我的想法是正确的,我该如何避免?根据一些研究,一种方法是使用strip_tags()
。现在我想知道,我可以依靠它吗?那就够了吗?
答案 0 :(得分:1)
这是关于用正确的函数编码的东西。 始终查看您想要的产品,然后选择编码器!
<强>样品:强>
在构建HTML时,最好使用htmlspecialchars和/或htmlentities。
当你构建SQL时,它很适合用于mysql PDO :: quote或mysqli_real_escape_string。
<强>答案:强>
在您的情况下,您正在构建一个URL。为此,您需要使用urlencode。
此外,您还需要将其转义为使用htmlentities更正HTML,因为您将在下一步中构建HTML。 请参阅PHP手册中的示例 - &gt; urlencode链接(示例#2)。
答案 1 :(得分:-1)
只要您想输出来自用户的参数,就应该使用 htmlspecialchars() 。
$variable = htmlspecialchars($_GET['param'], ENT_QUOTES, 'UTF-8');