Php 在DOM中使用GET参数的安全方法?

Php 在DOM中使用GET参数的安全方法?,php,html,security,xss,Php,Html,Security,Xss,以下是我的代码的简化版本: $html = "<a class='myclass' href='/path?arg='" . $_GET['param']. "'>mylink</a>"; $html=”“; 今天我阅读了有关XSS攻击的文章,我认为我的代码受到了XSS攻击。不过我不确定,但它闻起来很香 无论如何,如果我的想法是正确的,我怎么能避免呢?根据一些研究,一种方法是使用strip\u tags()。现在我想知道,我能依靠它吗?这足够好吗?当您想要输出来自用户

以下是我的代码的简化版本:

$html = "<a class='myclass' href='/path?arg='" . $_GET['param']. "'>mylink</a>";
$html=”“;
今天我阅读了有关XSS攻击的文章,我认为我的代码受到了XSS攻击。不过我不确定,但它闻起来很香

无论如何,如果我的想法是正确的,我怎么能避免呢?根据一些研究,一种方法是使用
strip\u tags()
。现在我想知道,我能依靠它吗?这足够好吗?

当您想要输出来自用户的参数时,应该使用

$variable=htmlspecialchars($_GET['param'],ENT_引号,'UTF-8')

当您想要输出来自用户的参数时,应该使用


$variable=htmlspecialchars($_GET['param'],ENT_引号,'UTF-8')

这是关于使用正确的函数对某些内容进行编码。 始终查看您想要的产品,然后选择编码器

样本:

在构建HTML时,最好使用htmlspecialchars和/或htmlentities

在构建SQL时,可以将其用于mysql PDO::quote或mysqli_real_escape_字符串

回答:

在您的例子中,您正在构建一个URL。为此,您需要使用

此外,您还需要转义它以更正HTML,因为您将在下一步中构建HTML。
请参阅PHP手册->urlencode链接(示例2)中的示例。

这是关于使用正确的函数对某些内容进行编码。 始终查看您想要的产品,然后选择编码器

样本:

在构建HTML时,最好使用htmlspecialchars和/或htmlentities

在构建SQL时,可以将其用于mysql PDO::quote或mysqli_real_escape_字符串

回答:

在您的例子中,您正在构建一个URL。为此,您需要使用

此外,您还需要转义它以更正HTML,因为您将在下一步中构建HTML。
请参见PHP手册->urlencode链接(示例2)中的示例。

嘿,是的,您可以自己尝试一下。只需通过警报(“你好世界”);支持您的?param=值。正如这个答案所说:你有两个选择。去除标签或对HTML进行编码。无论哪种方法都会阻止XSS。strip_tags()在您的情况下是不够的,想象一下当您调用
index.php?param='onclick='alert(1)
时,您的输出会变成什么样子,所以您需要的是htmlspecialchars()@WillParky93仔细阅读任务并回答您链接的问题,它清楚地指出,strip_tags()不足以阻止XSSFO,每当在PHP代码中构建HTML时,我都使用
htmlspecialchars()
。此外,您可能需要考虑使用HTML模板或某种模板引擎,因为它自动清理HTML变量,以节省您忘记某些东西。嘿,是的,您可以自己尝试一下。只需通过警报(“你好世界”);支持您的?param=值。正如这个答案所说:你有两个选择。去除标签或对HTML进行编码。无论哪种方法都会阻止XSS。strip_tags()在您的情况下是不够的,想象一下当您调用
index.php?param='onclick='alert(1)
时,您的输出会变成什么样子,所以您需要的是htmlspecialchars()@WillParky93仔细阅读任务并回答您链接的问题,它清楚地指出,strip_tags()不足以阻止XSSFO,每当在PHP代码中构建HTML时,我都使用
htmlspecialchars()
。此外,您可能需要考虑使用HTML模板或某种模板引擎,因为它自动清理HTML变量,以便于您免除某些东西。此功能是获得正确的HTML编码。他正在建立一个URL。事实上,空格、问号和其他一些并没有逃过。如果他使用htmlspecialchars,他的url将不正确。此函数用于获取正确的HTML编码。他正在建立一个URL。事实上,空格、问号和其他一些并没有逃过。如果他使用htmlspecialchars,他的url将不正确。