【发布时间】:2011-10-23 01:15:49
【问题描述】:
我什至不知道在这里问什么问题。我的问题陈述很简单:我需要用盐在数据库上存储密码,根据存储的密码验证输入的密码,并在用户尝试登录时使用随机挑战词验证密码。我正在使用 php/javascript。
在试图解决这个问题时,我遇到的问题是,如果我以 html 形式传递一个挑战词,然后用该词对输入的密码进行哈希处理,我可以在服务器上验证密码,但我可以不要将密码与挑战词分开,以便我可以根据数据库上的加盐密码对其进行验证。如果我将密码以明文形式发送到服务器或在没有挑战词的情况下对其进行哈希处理,我可以验证它,但现在我无法可靠地验证它。
我认为我需要某种 2 路算法,以便我可以使用密钥对其进行加密,然后在验证密码时验证密钥。我该怎么做?或者如果它不能完成那我该怎么办?
【问题讨论】:
-
要清楚,随机挑战是为了在传输过程中保护密码?或者是一种身份验证机制来证明他们是人类或类似的?
-
为了弄清楚这一点,我查看了一个名为“Geeklog - The Secure CMS”的 php 博客的源代码。瞧,他们免费且清晰地发送用户密码,并使用服务器上的 MD5 对密码进行“编码”。所以也许我的问题应该是“对于什么类型的系统,我应该使用盐和挑战词实现密码验证和身份验证?”
-
phpBB 似乎也可以免费且清晰地发送密码。我想我是在思考这个问题。
-
@majicbunnie 是的,我想我需要在传输过程中使用挑战词来保护密码。然后我需要一种方法将其与数据库上的加盐密码进行比较,但没有任何方法可以做到这一点..
-
@David Schwartz 提供的解决方案似乎可以满足您的需求,添加 SSL 层也是个好主意。当然,您是对的,根据您的情况,这可能是矫枉过正。一个简单的 SSL 登录系统,后端带有哈希(盐 + 密码),可能足以满足您的安全需求。
标签: php validation authentication