1

我敢肯定,所有这一切都有一些基本的东西可以简化我所缺少的整个概念,但是这里有:

好的,为了安全起见,您对密码进行了加盐和哈希处理,但是执行此操作的代码呢?

如果您在主机或 vps 上,“某人”不能获取您在那里编译的源代码 b/c 吗?或者,如果他们可以访问您的数据库,他们是否不能访问执行加密/解密的程序并暴力破解它,直到他们获得算法?

我知道没有什么是 100% 安全的,但是在这种情况下如何提高安全性呢?

4

2 回答 2

3

在您的数据被泄露的情况下,加盐将在一定程度上保护数据免受字典或彩虹表攻击。蛮力并非不可能,但会很慢,并且需要为每个密码哈希再次执行。如果不加盐,蛮力攻击变得更容易实现。

与某些人所说的相反,盐没有以任何特殊方式受到保护(也不需要),而是以纯文本形式附加到散列中。但是,对于每个散列,它确实需要是唯一的,否则它对于这种用途变得毫无意义。这与用于所有哈希并且必须受到保护的辣椒形成对比。由于这种区别,盐腌通常是首选,除非保证辣椒的获取受到限制(这不是一件容易的事)。

如果您想提高安全性,请不要使用共享主机。并且不允许直接访问数据库。并且不要让未经预先筛选的任何人访问您的系统。在实际意义上,这些并不总是可行的选择。所以只需使用盐并忍受它:)

于 2013-03-04T05:03:25.000 回答
1

您的源代码中没有关于哈希算法的任何“隐藏”内容。事实上,您应该使用经过验证的、众所周知的强哈希实现,而不是自己实现算法。

盐是需要保护的部分。该盐不是您代码的一部分(或不应该是),而是应该存储在某种文件存储/数据库中(取决于您的应用程序),并且应该基于每个用户应用(用户 Joe 应该有与用户 Fred 不同的密码盐)。

可以肯定的是,保护每个用户密码使用的盐是至关重要的。这就是适当的文件系统/数据库权限发挥作用的地方。

另一方面,您的代码也应该受到任何未经授权的用户的保护,但不是为了保护盐(至少不是直接......如果有人可以访问盐,或者只是用他们自己的代码替换您的代码,完全绕过身份验证检查)。

于 2013-03-04T05:02:19.807 回答