【问题标题】:Is it possible to hide a password field from the address bar?是否可以从地址栏中隐藏密码字段?
【发布时间】:2011-08-22 13:22:28
【问题描述】:

我有一个带有用户名和密码的登录表单。它可以工作,但在请求之后我在网络浏览器上看到类似“...login?user=myUser&password=myPassword”的内容。

鉴于表单有一个密码字段,在输入密码时会隐藏密码,所以在地址栏上看到密码并不好笑。

是否可以避免这种情况?

用户验证是在带有自定义 java web 服务器的服务器上完成的。

【问题讨论】:

  • 在不知道您使用什么框架来处理您的 http 消息交互的情况下,我们只能指定一个通用答案。
  • 我使用的是自定义网络服务器,所以没有标准框架。我拦截了 HTTP 请求并采取相应措施。

标签: java web-applications login passwords


【解决方案1】:
  1. 将您的 HTTP 表单方法设置为POST,而不是GET。这消除了在 url 上附加参数的形式。
  2. 确保您的页面使用HTTPS 而不是HTTP。这样,窃听者就无法读取未加密的 HTTP POST 消息。

【讨论】:

  • +1 第 2 点非常重要。许多人认为 POST 表单无法“看到”,但这仅适用于正常人眼。
【解决方案2】:

做到这一点的唯一方法是不使用GET 提交表单的方法。您需要使用POST 方法。更多信息可以在这里找到http://www.cs.tut.fi/~jkorpela/forms/methods.html

您的表单将如下所示

    <form method="post" action="somepage.php">
    </form>

【讨论】:

    【解决方案3】:

    您的表单使用的是 GET 而不是 POST。通过 URL (GET) 中的查询字符串传递变量可能很危险,因为用户可以看到和修改这些值。将表单的方法更改为 POST。在标准 HTML 中,这看起来像:

     <form method="GET" action="......
    

    ...到...

    <form method="POST" action=".....
    

    【讨论】:

      【解决方案4】:

      您可以对密码进行编码,这会使密码变得模糊。

      但是,使用 POST 表单会隐藏其所有字段。

      【讨论】:

        【解决方案5】:

        是的,使用 POST 请求而不是 GET。

        【讨论】:

          【解决方案6】:

          将您的表单转换为使用 HTTP“POST”方法而不是“GET”,例如:

          <form action="/login" method="post">
          

          还可以考虑在传输之前隐藏密码,例如使用 Base64 或 MD5 等方案。

          【讨论】:

            【解决方案7】:

            将表单上的“方法”属性从“get”更改为“post”——最好通过 HTTPS 发送请求。

            【讨论】:

              【解决方案8】:

              当您在地址栏中看到“login?user=myUser&password=myPassword”时,这意味着您的登录表单正在使用 GET 请求方法:

                 <form id="login" action="some_file" method="get">
              

              隐藏此信息的最简单方法是将 GET 方法更改为 POST 方法:

                 <form id="login" action="some_file" method="post">
              

              您可以在此处阅读有关这两种方法的更多信息:

              When to use POST and GET?

              但是,请注意 POST 并不比 GET 安全得多。您可以在此处阅读更多相关信息:

              POST and GET in terms of Security

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2013-09-19
                • 2014-01-09
                • 2012-03-06
                • 1970-01-01
                • 2014-02-22
                • 2011-07-16
                • 1970-01-01
                • 2013-08-21
                相关资源
                最近更新 更多