在从开发服务器转移到生产期间,我注意到了潜在的浏览器安全问题。
在PHP文件中,我有一个简单的登录表单POST
。基本HTML看起来像:
<form action="http://mysite.com/includes/login/login.php" method="post">
<table>
<tr>
<td>
Username:
</td>
<td>
<input type="text" name="username" size="15" maxlength="64" tabindex=1 />
</td>
</tr>
<tr>
<td>
Password:
</td>
<td>
<input type="password" name="pword" size="15" maxlength="40" tabindex=2 />
</td>
</tr>
</table>
<p><input type="submit" name="submit" value="Login" tabindex=3 /></p>
<input type="hidden" name="submitted" value="TRUE" />
</form>
我注意到当我(通过意外)消除表单操作的结尾引用(例如,<form action="http://mysite.com/includes/login/login.php method="post">
)时,表单被重定向到“未找到的页面”。但它还将$_POST
数据附加为$_GET
数据。因此浏览器将登录信息显示为:
http://mysite.com/includes/login/login.php%20method=?username=theperson&pword=happyday&submit=Login&submitted=TRUE
我在IE和Chrome中获得相同的响应。这是一个很大的安全漏洞吗?我知道我可以在开发人员工具中查看类似的信息,但我想知道黑客是否可以使用它,以及是否有任何我应该采取的措施来保护它。此外,任何人都可以解释为什么$_POST
数据已转换为$_GET
数据?
答案 0 :(得分:3)
这里只有一个答案,它被转换可能是因为错过了最后"
它使<form>
元素无效,因此浏览器默认为GET请求。
答案 1 :(得分:2)
简答:不。你无需担心。
答案很长?
您正在谈论的漏洞是网站本身的代码错误是否正确?如果是这种情况,如果您将错误留在代码中,那么它只是一个安全漏洞。
黑客将无法修改网站上的html代码来创建此故障。他们唯一能做的就是下载html代码,创建一个新的html文档并进行修改。在这种情况下,带有bug的html只能在他们的计算机上而不是在生产站点上,这意味着其他用户不会受到影响。
如果黑客能够修改网络服务器上的文件 ,那么您的安全漏洞就在其他地方,不在本问题的范围内。
答案 2 :(得分:1)
如果您的表单如下所示:
<form action="http://mysite.com/includes/login/login.php method="post">
它等同于:
<form action="http://mysite.com/includes/login/login.php method=" post">
具有两个属性的表单中的will result:
action
:http://mysite.com/includes/login/login.php method=
post"
:空 由于没有指定方法属性,因此暗示了方法GET。
此处唯一的安全考虑因素是敏感数据是通过URL发送的,除了您通过非安全通道发送登录凭据之外,它还可以显示在代理和服务器日志中。