密码安全;这样安全吗?

时间:2010-05-05 08:56:47

标签: php sql mysql html security

我昨天问了一个关于密码安全的问题......

我是安全的新人......

我使用的是mysql数据库,需要在那里存储用户密码。我在答案中被告知hashing然后保存密码的 HASHED 值是正确的方法。

所以基本上我想和你们核实这是正确的。

这是一个分类广告网站,对于用户放置的每个分类,他必须输入密码,以便他/她可以在以后使用该密码删除分类(例如当产品销售时)。

在名为“put_ad.php”的文件中,我使用$_POST方法从表单中获取传递。 然后我将其哈希并将其放入mysql表中。 然后,每当用户想要删除广告时,我通过对其进行散列并将输入的密码的散列值与mysql db中的散列值进行比较来检查输入的密码,对吗?

但是,如果我作为管理员要删除分类,有什么方法可以轻松地“取消”密码?

目前使用

sha1 btw。

非常感谢一些代码。

由于

8 个答案:

答案 0 :(得分:6)

如果您是管理员并且已编写代码,则无需知道原始用户密码。作为管理员,您可以在右侧中进行编码,以便您执行此操作。

这是用户身份验证和用户授权之间的区别

答案 1 :(得分:3)

你在做什么是正确的,但是不,SHA,MD5和其他只是一种方式哈希,所以你不能解开它们(从理论上讲,你可以通过蛮力)。让你作为管理员删除的东西也应该是你的授权管理的一部分。

答案 2 :(得分:2)

是的,你的第一部分是正确的。

但是,没有办法取消密码(轻松)。这实际上是存储哈希而不是真实密码的重点。

你应该考虑在你的php应用程序中加入一些逻辑,这样当一个拥有管理员权限的用户登录时,就没有必要检查密码来删除一个条目。

答案 3 :(得分:1)

阅读本文:http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know-about-s.html然后您就可以开始使用bcrypt存储您的密码了。

答案 4 :(得分:1)

是的,您正确存储密码。但正如Arkh所说, bcrypt 是一种更安全的加密算法。

但密码在服务器上加密,这意味着它将以明文形式通过互联网发送,除非您使用连接的 SSL加密。任何在你和用户之间嗅探线路的人理论上都可以读取密码。对于您的使用,这可能是可以接受的......

我宁愿建立一个管理界面,允许管理员用户删除他/她想要的任何分类,无需“取消”密码。

答案 5 :(得分:0)

不,没有办法“取消”密码。哈希是一个单向的过程,无法逆转。

获取哈希码的工作密码的唯一方法是暴力;尝试哈希不同的密码,直到找到匹配为止。

管理员能够登录分类的最简单方法是存储当前的哈希码并从临时密码创建新的哈希码。之后他可以将原始哈希码放回原处,旧密码可以使用。

答案 6 :(得分:0)

是的,你是对的,但用户的密码不应该是可读的,甚至不是管理员!所以即使是unhash也是可能的(事实并非如此),将其解密为可读的纯文本将是一个明显的不可取之处!

另一个问题是,您不应该只创建密码的哈希值,因为这不安全。密码可以通过暴力找到,意味着有人通过可能的密码迭代并尝试创建他从网络中嗅探的哈希码等。如果他创建了相同的哈希,他找到了密码。 但是你可以使用盐渍哈希。意味着您将密码添加一个盐(攻击者不知道的一些其他字符串)并将其哈希。例如你创建了一个“username-anytextonlyknownbyourapp-password”的哈希值。

答案 7 :(得分:0)

如果问题是“如何取消密码” - 答案是 - 没有解码散列值的解决方案,方法一是粗暴(通过计算散列和比较来找到原始值)与基地)但它的过程非常缓慢。如果密码是“强”,那就是无法解决的任务。

如果问题是“如何管理密码” - 您不需要使用“unhash”