进行安全登录

时间:2009-07-13 14:54:24

标签: php mysql password-protection

我一直在尝试为我正在开发的网站进行安全登录。

我不能让它工作,我使用MySQL的MySQL数据库。

我可以让表单将用户及其信息添加到数据库中,但我似乎无法使其与登录一起使用。

HTML <input type="password">使用什么类型的加密?

如何在用户访问我的网站时保持用户登录?

我如何安全地检查它是否是与用户名匹配的正确密码?

我一直在做PHP一年,我还没学会这个部分,所以很高兴知道。

4 个答案:

答案 0 :(得分:11)

  

使用什么类型的加密   html&lt;输入类型=密码&gt; ??

无。输入被屏蔽以防止“查看监视器”攻击。

如果您需要安全性,请通过HTTPS(使用SSL的HTTP)传输数据。

  

如何在用户访问我的网站时保持用户登录?

大多数人都使用cookies。

  

我如何安全地检查它是否是与用户名匹配的正确密码?

牢固?

不要使用共享服务器。按照正常步骤保持该服务器上的数据安全。将密码存储为哈希值,而不是纯文本。

检查?

将提交的密码转换为匹配的哈希值,然后正常比较。假设您将数据存储在数据库中,只需SELECT FROM users WHERE user =?和密码=?并计算你得到的行数。

答案 1 :(得分:2)

我将解决您问题的密码保护部分。

密码输入类型没有内置加密功能。浏览器将像其他所有内容一样以纯文本形式提交。有两种方法可以保护密码。

首先是设置challenge/response system,但这需要Javascript才能运行。基本上你接受用户的密码,如果它是存储在服务器上的方式,则应用散列函数,然后你获取服务器质询令牌并为新散列加密密码值。服务器将获取密码的值并应用挑战。如果匹配密码是正确的,任何人都无法知道实际密码是什么。这需要javascript,因为如果要使这种方法有效,必须在客户端生成散列。

另一个更简单的选择是为站点的登录部分要求HTTP。

答案 2 :(得分:1)

正如David所说,默认情况下没有密码加密,请使用https来保持加密。

要让您的用户登录,请在登录页面上根据数据库中存储的内容检查其密码。您应该对密码进行哈希处理,并将哈希密码存储在数据库中(请参阅crypt)。然后,当用户登录时,从用户散列密码,并将其与数据库中的散列密码进行比较。匹配时,请登录,否则登录失败。如果您的数据库遭到入侵,至少他们没有密码。

为了让用户登录,在检查密码后,在会话中设置一个变量,即

 $_SESSION[loggedin] = true. 

在每个请求中,检查此会话变量,如果为true,则允许访问该页面,如果为false,则将用户重定向到登录页面

 header("Location: /login.php");

答案 3 :(得分:0)

密码输入未加密。如果您不想存储明文密码(由表单返回),您应该运行php和mysql提供的几个函数之一。检查php的md5sha1或mysql的encrypt来存储密码。

然后,要检查他们是否输入了正确的密码进行登录,您可以在其条目上使用任何加密方法,从数据库中检索散列密码并进行比较。 (另外,请查看salting passwords

要拥有持久登录会话,您可以使用php的$_SESSION变量。或setcookie()

相关问题