我有一个包含用户名和密码的登录表单。它可以工作,但在我在Web浏览器上看到请求之后会出现类似“... login?user = myUser& password = myPassword”的内容。
鉴于表单有一个密码字段,在输入时会隐藏密码,在地址栏上看到密码会不会很有趣。
有可能避免这种情况吗?
用户验证是在具有自定义Java Web服务器的服务器上完成的。
答案 0 :(得分:7)
POST
,而不是GET
。这消除了在url上附加参数的形式。HTTPS
代替HTTP
。这样,窃听者就无法读取未加密的HTTP POST消息。答案 1 :(得分:1)
唯一可以做到这一点的方法是不使用表单提交的GET
方法。您需要使用POST
方法。更多信息可以在http://www.cs.tut.fi/~jkorpela/forms/methods.html
您的表单将如下所示
<form method="post" action="somepage.php">
</form>
答案 2 :(得分:1)
您的表单正在使用GET而不是POST。通过URL(GET)中的查询字符串传递变量可能很危险,因为用户可以查看和修改这些值。将表单的方法更改为POST。在标准HTML中,这看起来像:
<form method="GET" action="......
...到...
<form method="POST" action=".....
答案 3 :(得分:0)
您可以对密码进行编码,这会使其模糊不清。
但是,使用POST表单会隐藏其所有字段。
答案 4 :(得分:0)
是的,使用POST请求而不是GET。
答案 5 :(得分:0)
转换表单以使用HTTP“POST”方法而不是“GET”,例如:
<form action="/login" method="post">
还要考虑在密码被传输之前模糊密码,例如使用Base64或MD5等方案。
答案 6 :(得分:0)
将表单上的'method'属性从“get”更改为“post” - 并通过HTTPS发送请求,最好是。
答案 7 :(得分:0)
当您在地址栏中看到“登录?user = myUser&amp; password = myPassword”时,这表示您的登录表单正在使用GET请求方法:
<form id="login" action="some_file" method="get">
隐藏此信息的最简单方法是从GET更改为POST方法:
<form id="login" action="some_file" method="post">
您可以在此处详细了解这两种方法:
但请注意,POST并不比GET安全得多。你可以在这里阅读更多相关信息: