2012-01-08 82 views
5

我正在用登录表单搜索简单哈希与密码。 我遇到了这个http://tinsology.net/2009/06/creating-a-secure-login-system-the-right-way/。在这里他密码,创建一个盐,然后再次哈希密码&盐。 我建立一个登录表单自己,这是abc.php在提交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在& '最后密码'数据库。

问:我的问题是从abc.php提交表单时,密码是否为文本?

如果是,那么有人读它的机会,然后有什么需要散列密码,因为即使我登录,我会提交页面,并从$ _REQUEST可能检索通行证和用户名另一个页面,在那里它将被检查,它作为文本旅行,因此可以被某人读取。

+0

密码有两个问题:存储和传输。存储是最关键的,你*必须*散列存储的密码。在传输过程中保护它也是一个好主意,但并不重要。破解一个服务器并读取整个数据库要比将自己插入到/从服务器的每个HTTP请求的中间以记录密码要容易得多。所以,散列(如本文所述)是必需的。但如果你有办法,那么你应该把你的整个登录区域放在SSL/https下。如果SSL处于活动状态,此处的代码示例将非常安全。 – 2012-01-08 08:55:00

+0

@AbhiBeckert谢谢。 – Nikhar 2012-01-08 09:05:03

回答

6

密码现在以明文形式发送。有没有使用HTTPS的解决方法。在使用javascript通过HTTP套接字发送密码之前,您可以散列密码。那里有几个教程。这不如使用https的好,但仍然比没有好。

2

该文章的“安全”部分清楚地涉及密码的存储。如果客户端或服务器端的网络不安全(即网络上有数据包嗅探器的人),有人可能会截取密码。

如果这是一个问题,您可以通过使用SSL加密客户端和服务器之间的会话来减轻风险。

2

如果用户提交表单,浏览器将发送密码作为发布请求的一部分。

如果您使用的是SSL(https),则浏览器和您的网络服务器之间的完整通信将被加密(因此第三方不能读取数据),但是如果您使用的是任何可以查看流量​​的人,可以看到密码

+0

+1因为没有假设他已经不使用SSL – 2012-01-08 08:51:19

6

您的密码通过HTTP发送或HTTP获取,取决于您的表单中的方法。 HTTP Post或HTTP Get通过套接字流发送,并且有人可以一路嗅探您的数据,您的网络管理员,您的ISP提供商等。

如果要创建安全登录,您的服务器必须支持HTTPS。 如果您通过HTTPS发送,则没有人可以读取您的数据。

2

你所指的代码只是关于密码存储,所以是的,密码将以明文形式通过互联网,是的,有人可能会拦截它在例如WiFi热点。

您最好的,最成熟的解决方案是使用SSL进行登录通信。

相关问题