2013-04-10 66 views
1

关于密码和数据库安全,意识到用户访问用户的唯一方法是询问是否有人访问数据库,他不需要用户密码,他可以对数据库本身进行更改。
关于加密,我发现在PHP手册上,河豚是最明显的,但我找到了一个在线解密器在谷歌的第一个结果搜索,加上,黑客可能会知道如何解密任何密码,他已经得到数据库密码本身。
你对此有何想法?密码加密是否真的需要,而且安全?先谢谢你。数据库密码安全,用php加密确实有区别?

+0

这就是*哈希*为 – 2013-04-10 16:21:47

+0

那么是什么?人们不会闯入数据库来给他们自己的超级用户权限,所以他们可以捅你的论坛或任何其他。他们闯入DB获取凭证,因为大多数人倾向于在多个站点上重复使用相同的密码。您的网站可能“很小”,但您的某些用户在其他网站上使用相同的用户名/密码的可能性非常大,比如他们的银行......您所能做的最糟糕的事情是对安全性有着傲慢的态度。 – 2013-04-10 16:24:03

+0

因此,只是导致我的网站很小,它不需要安全吗?我明白你的答案,感谢你的时间,但我问问原因,如果用户已经进入了数据库本身,他可以获得通过,散列或加密比他可以用残酷的力量解密它(也许他可以使用就像他以前用来获取盐的通行证一样,即使它是每个用户的盐)。这可能需要时间,但可以做到,不会吗? – sagits 2013-04-10 16:37:29

回答

0

有人可以使用SQL注入来获取用户的密码。在这种情况下,他可能无法访问任何表之外的用户表,所以

是否真的使性差异,如果用户的密码散列或加密

肯定。除此之外,如果您有版主,开发人员以及您在查看此表格,则作为用户,如果您正在查看散列,而不是实际的密码,我会感觉更舒适,因为我可以在其他站点。总的来说,它为用户提供了更多的安全性和舒适性,所以真正的问题是,为什么不呢?

+0

但是用这种方式思考,会指向我们不只是加密密码,而是很多用户变量,他不希望我们看到,也许,任何真正想要的人,并且使用db's都可以看到它们(通过解密)。而关于sql注入,这只是使用残酷的力量难以发现密码,但无论如何,它可以完成,不是吗? – sagits 2013-04-10 16:26:05

+0

@sagits你是对的,你的用户拥有一定程度的信任,但密码通常比姓名,地址和电子邮件等信息更微妙。您需要保护可能为其银行帐户,电子邮件和Facebook使用相同密码的无知用户。 SQL注入与破解密码不同。你应该阅读它,因为它对安全性非常重要。 – Samuel 2013-04-10 16:34:40

+0

谢谢你,塞缪尔。我会详细阅读。 – sagits 2013-04-10 16:41:22

0

关于加密,我找到PHP手册是河豚是最 表示,但香港专业教育学院发现了第一个结果搜索 一个在线解密在谷歌

最好的解决办法就是散列你密码,而不是加密它们。许多人犯加密与哈希混淆的错误(反之亦然)。加密文本可以解密,而散列是单向的。即一旦你散列了一些东西,你就不能“去散列”它。你在找什么是Bcrypt,这是一个散列算法,它是根据Blowfish密码。

在关于攻击者获得对您的密码访问哈希:

除了包含盐,以防止彩虹表攻击, bcrypt是一种自适应功能:随着时间的推移,迭代次数可以 增加到使它变得更慢,所以即使在增加计算能力的情况下它仍然能够抵抗强力的搜索攻击。

关于Bcrypt的好处是速度慢,这意味着尝试和破解Bcrypt哈希(取决于盐的迭代和随机性)相对昂贵。

0

如果攻击者获得用户的密码,他有他的密码。
如果攻击者获得用户密码的散列,他只有密码散列而不是密码本身。

现在想起人们的懒惰:有可能检索到的密码不是唯一的这个帐户,但也适用于其他帐户(电子邮件,Twitter,Facebook等)。这实际上一直在发生。

如果您只是使用强密码散列方案(如bcrypt,scrypt或PBKDF2)存储用户密码的散列,黑客就需要大量资源(时间或处理能力)来猜测或蛮力密码。

顺便说一下:哈希函数是不可逆的。这些散列颠倒站点只是巨大的查找表,它返回一个密码,用于已知的密码+散列对。

0

我明白,哈希会使密码本身更安全,但不是数据库。我正在阅读有关密码安全的信息,并且我想问问用户,什么会更安全。 为每个用户使用单盐,并存储在用户表中(是否有更好的方法来存储?)或为每个人使用盐?

0

我想对已经给出的良好答案做一些补充。

首先,您提到的Blowfish确实是一种加密算法,可以解密。但不要混淆BlowfishBCrypt这是一个基于Blowfish的哈希算法。

二,你散列攻击者的密码,可以你的数据库。获取读取访问比写入访问要容易得多,一种常用的技术是SQL注入。您可以在demo中自己尝试一下,点击→箭头以填写准备好的输入。

  1. 因此,虽然攻击者可以读取数据库,但这并不意味着他可以写入数据库。因为他只知道密码的散列,所以他不能在登录表单中输入原始密码。
  2. 如果攻击者也有写入权限,您不能阻止他使用您的帐户,但他仍然不知道原始密码,并且无法在其他网站上尝试。