0

在从开发服务器转移到生产服务器的过程中,我注意到一个潜在的浏览器安全问题。

在一个 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数据?

4

3 回答 3

3

这里只有一个答案,它被转换可能是因为缺少最后一个"它使<form>元素无效,所以浏览器默认为 GET 请求。

于 2012-11-30T21:18:07.460 回答
2

简短的回答:没有。你没有什么可担心的。

长答案?

你说的漏洞是网站本身的代码错误对吗?如果是这种情况,如果您将错误留在代码中,这只是一个安全漏洞。

黑客将无法修改网站上的 html 代码来制造此故障。他们唯一能做的就是下载 html 代码,创建一个新的 html 文档并对其进行修改。在这种情况下,带有错误的 html 只会在他们的计算机上,而不是在生产站点上,这意味着其他用户不受影响。

如果黑客能够修改Web 服务器上的文件,那么您的安全漏洞就在其他地方并且超出了此问题的范围。

于 2012-11-30T21:22:11.560 回答
1

如果您的表单如下所示:

<form action="http://mysite.com/includes/login/login.php method="post">

它相当于:

<form action="http://mysite.com/includes/login/login.php method=" post">

将产生一个具有两个属性的表单:

  • actionhttp://mysite.com/includes/login/login.php method=
  • post":空的

由于没有指定方法属性,因此方法 GET 是隐含的。

这里唯一的安全考虑是敏感数据是通过 URL 发送的,该 URL 稍后会显示在代理和服务器日志中,除了您通过非安全通道发送登录凭据这一事实之外。

于 2012-11-30T21:58:39.653 回答