是否可以在不刷新窗口的情况下进行“密码”验证?

时间:2010-10-27 12:21:48

标签: javascript mysql passwords refresh

我制作了一个简单的Web应用程序,在不刷新窗口的情况下完成了很多工作。现在我遇到了一个我以前没有意识到的问题。如果我找不到解决方案,我将不得不重新设计整个应用程序,这将耗费大量时间,并可能会消除使用它的一些冷静。哎哟。好的,回到问题。

要显示 - 比方说 - 网站的“秘密”部分,用户必须输入一种...密码并单击“确认”。但我不知道如何存储密码以防止用户阅读密码,例如在网站的源代码中。

目前,我使用mysql数据库 - 我用它连接,在PHP中读取密码并将其存储在全局javascript变量中。但是在进入源代码后它当然是可读的。

有可能做这样的事吗?是否可以秘密检查密码而无需刷新站点并使用PHP进行检查?

3 个答案:

答案 0 :(得分:6)

我赞扬你在实施前询问。这些天似乎很少有人这样做。

首先,不管你信不信,你不想在任何地方存储密码。您想要使用名为salted hash的内容。使用这种技术,您最终得到一个基于密码的随机查找代码,可用于验证用户是否拥有他们所说的密码。

其次,您将要使用Ajax请求在Javascript中为您执行此检查。我更喜欢使用JQuery库,因为它提供了一个非常好的,跨平台的,经过测试的,易于使用的Javascript包装器,可以很容易地制作这样的东西。

答案 1 :(得分:1)

您可以使用MD5或SHA1对密码进行编码,为您提供32或40个随机字符的字符串。此字符串非常难(并非不可能)以反转原始密码。

MD5和SHA1具有以下属性:给定值始终会产生相同的哈希值。例如。如果您将“stackoverflow”散列到123ABC并在另一台机器上再次执行,那么该机器也将生成123ABC。

因此,只需使用相同的算法对用户输入的密码进行编码,您就可以比较两个哈希值。如果匹配,则密码正确。

答案 2 :(得分:1)

我在python中实现了一个这样的应用程序并采用了以下方法 1)通过向后端发送ajax post请求来执行一次性认证。您可以使用库(jquery,dojo等)或简单的javascript,我选择后者 2)成功验证后,使用uuid库生成随机唯一ID,将其称为会话ID。 Php有以下uniqid库,应该为你做这个 3)将此会话ID存储在cookie和/或变量
中 4)将会话ID和用户ID存储在memcache或数据库中,以检查会话是否处于活动状态。

我理解php有一个内置的session handling mechanism所以第2步将被改变,并且3& 4为你完成。