我在登录表单中搜索带密码的简单哈希。 我偶然发现了http://tinsology.net/2009/06/creating-a-secure-login-system-the-right-way/。在这里他哈希密码,创建一个盐,然后再次哈希密码&盐。 我自己正在构建一个登录表单,这是abc.php
<form name="register" action="register.php" method="post">
Username: <input type="text" name="username" maxlength="30" />
Password: <input type="password" name="pass1" />
Password Again: <input type="password" name="pass2" />
<input type="submit" value="Register" />
</form>
提交后,转到register.php,它有
$u=$_REQUEST['username'];
$p=$_REQUEST['pass1'];
//salt create function
//hashing code
//final hash password
然后提交$ u&amp;数据库中的“最终密码”。
问:我的问题是从abc.php提交表单时,密码是否为文本?如果有,那么有可能有人阅读它,然后需要哈希密码,因为即使我登录,我也会提交页面,并从$ _REQUEST中检索通行证和用户名。页面,它将被检查,它作为文本旅行,因此可以被某人阅读。
答案 0 :(得分:6)
您的密码是通过HTTP Post或HTTP Get发送的,取决于表单中的方法。 HTTP Post或HTTP Get通过套接字流发送,有人可以一路嗅探您的数据,您的网络管理员,您的ISP提供商等。
如果要创建安全登录,则服务器必须支持HTTPS。 如果您通过HTTPS发送,则无人可以读取您的数据。
答案 1 :(得分:6)
密码现在以明文形式发送。有一种不使用HTTPS的解决方法。您可以在使用javascript通过HTTP套接字发送密码之前对密码进行哈希处理。那里有几个教程。这不如使用https好,但总比没有好。
答案 2 :(得分:2)
该文章的“安全”部分明确涉及密码的存储。如果客户端或服务器端的网络不安全(即网络上有数据包嗅探器的人),有人可能会拦截密码。
如果这是一个问题,您可以通过使用SSL来降低风险,这将加密客户端和服务器之间的对话。
答案 3 :(得分:2)
如果用户提交表单,浏览器会将密码作为发布请求的一部分发送。
如果您使用SSL(https),浏览器和您的网络服务器之间的完整通信将被加密(因此第三方无法读取数据),但如果您使用的是可以查看流量的http的任何人,可以看密码
答案 4 :(得分:2)
你所指的代码只是关于密码存储,所以是的,密码将以明文形式通过互联网,是的,有人可能会在例如WiFi热点上拦截密码。
您最好,最成熟的解决方案是使用SSL进行登录通信。