我一直在试图为我正在开发的网站进行安全登录。进行安全登录
我只是不能得到它的工作,我使用MySQL数据库与PHP。
我可以使窗体添加用户以及他们对数据库的信息,但我似乎无法使它的登录工作。
什么类型的加密与HTML <input type="password">
一起使用?
如何让用户在访问我的网站期间保持登录状态?
我该如何安全地检查它是否与用户名匹配的正确密码?
我一直在做PHP的,也许一年了,我只是还没有认识到这部分又是那么这将是很好的了解。
我一直在试图为我正在开发的网站进行安全登录。进行安全登录
我只是不能得到它的工作,我使用MySQL数据库与PHP。
我可以使窗体添加用户以及他们对数据库的信息,但我似乎无法使它的登录工作。
什么类型的加密与HTML <input type="password">
一起使用?
如何让用户在访问我的网站期间保持登录状态?
我该如何安全地检查它是否与用户名匹配的正确密码?
我一直在做PHP的,也许一年了,我只是还没有认识到这部分又是那么这将是很好的了解。
使用何种类型的加密 html < input type = password> ??
无。输入只是屏蔽以防止“查看监视器”攻击。
如果您想要安全性,请通过HTTPS(使用SSL的HTTP)传输您的数据。
如何让用户在访问我的网站期间保持登录状态?
大多数人都使用cookies。
我该如何安全地检查它是否与用户名匹配的正确密码?
安全地?
请勿使用共享服务器。按照常规步骤保持该服务器上的数据安全。将密码存储为散列值,而不是纯文本。
检查?
将提交的密码转换为匹配的散列,然后进行正常比较。假设你将数据存储在数据库中,那么只需SELECT FROM用户WHERE user =? AND密码=?并计算你回来的行数。
+1“查看监视器”攻击 – 2009-07-13 14:57:56
因此,共享服务器是否包含godaddy提供的mysql数据库?也如何使我的网站https而不是http,它涉及ssl? – techy 2009-07-13 14:58:41
我将解决您的问题的密码保护部分。
没有内置密码输入类型的加密。浏览器会像其他所有内容一样以纯文本格式提交。有两种方法可以保护密码。
首先是建立一个challenge/response system但这将需要使用JavaScript来工作。基本上你需要用户的密码,如果存储在服务器上的方式是应用散列函数,那么你需要一个服务器质询令牌,然后用新的散列值加密密码值。服务器将采用它的密码值并应用挑战。如果它们匹配,则密码是正确的,并且任何人都无法知道实际密码是什么。这需要JavaScript,因为如果此方法有效,必须在客户端生成哈希。
另一个更简单的选择,是要求HTTPS在日志中的网站的一部分。
正如大卫说,在默认情况下没有密码的加密,使用https保持加密。
为了使您的用户登录,在登录页面,检查他们对什么是存储在数据库中的密码。您应该散列您的密码,并将散列的密码存储在数据库中(请参阅crypt)。然后当用户登录时,从用户中散列密码,并将其与数据库中的散列密码进行比较。当它们匹配时,登录,否则登录失败。如果你的分贝受到了威胁,至少他们没有密码。
保持用户登录,检查完密码后,在会话中设置一个变量,即
$_SESSION[loggedin] = true.
在每次请求,检查这个会话变量,如果这是真的,允许访问如果该页面为假,则将用户重定向至登录页面,其中
header("Location: /login.php");
密码输入未加密。如果你不想存储明文密码(由表单返回),你应该运行php和mysql提供的几个函数之一。看看php的md5,sha1,或MySQL用于存储密码的encrypt。
然后,以检查他们是否输入了正确的密码登录,您可以使用他们入境任何加密方法,从数据库中检索哈希密码并进行比较。 (另请参阅salting passwords)
要拥有持久登录会话,您可以使用php的$_SESSION变量。或setcookie()
不知道为什么你得到一个downvote。 +1 – 2009-07-13 15:01:56