防止从 $_GET 方法中显示 HTML
Prevent HTML to be displayed from $_GET method
我目前正在研究用户管理系统。
我在其他站点中有注册和登录页面,它们都使用 $_GET 函数。经过一些试验后,我注意到当您确切知道自己在做什么时,可以从 GET 参数打印 HTML 代码。可能有一种方法可以通过在 img 标签中使用 onerror 来利用它,例如
如何防止这种情况发生?
URL: users.php?s=login&mail=">%20<img%20src=%27../images/notification_bell.png%27%20width=%2725px%27>
显示内容:
我的代码:
print ' <form action="' .$url. '" method="post">
<input type="hidden" name="a" value="login"/>
<b><label for="mail">E-Mail:</label></b>
<input type="email" id="mail" name="mail" maxlength="50" value="' .$mail. '" required><br><br>
如何防止这种情况发生?
使用htmlspecialchars
将user-defined个字符转换成web-safe个代码。 https://www.php.net/htmlspecialchars
另外,也许您可以使用 filter_var
来验证电子邮件,如果它无效则简单地取消设置。 https://www.php.net/filter_var
我目前正在研究用户管理系统。
我在其他站点中有注册和登录页面,它们都使用 $_GET 函数。经过一些试验后,我注意到当您确切知道自己在做什么时,可以从 GET 参数打印 HTML 代码。可能有一种方法可以通过在 img 标签中使用 onerror 来利用它,例如
如何防止这种情况发生?
URL: users.php?s=login&mail=">%20<img%20src=%27../images/notification_bell.png%27%20width=%2725px%27>
显示内容:
print ' <form action="' .$url. '" method="post">
<input type="hidden" name="a" value="login"/>
<b><label for="mail">E-Mail:</label></b>
<input type="email" id="mail" name="mail" maxlength="50" value="' .$mail. '" required><br><br>
如何防止这种情况发生?
使用htmlspecialchars
将user-defined个字符转换成web-safe个代码。 https://www.php.net/htmlspecialchars
另外,也许您可以使用 filter_var
来验证电子邮件,如果它无效则简单地取消设置。 https://www.php.net/filter_var