【发布时间】:2011-12-15 13:51:51
【问题描述】:
首先,我对加密和散列的理解:
- 加密 - 可以解密
- 散列 - 不能取消散列
在构建 Web 应用程序时,我应该:
- 使用加密密钥加密电子邮件地址(将用于登录)。很高兴能够解密电子邮件地址以供以后使用(例如向用户发送电子邮件)
- 用盐对密码进行哈希处理。没有人应该能够看到用户的密码,所以散列(因为它是单向的)很好。
如果以上2点是对的,我应该把加密密钥和盐存放在哪里?
如果我将它存储在数据库中,那么如果数据库受到损害,这似乎有点毫无意义。不过,好处是我可以为每个用户分配一个唯一的加密密钥和盐。
我应该将加密密钥和盐存储在我的应用程序配置中吗?如果数据库被泄露,至少加密密钥和盐也不会被泄露(希望如此)。问题在于,这可能意味着每个人都共享相同的加密密钥和盐。
有什么建议?
【问题讨论】:
-
也许你应该尝试在security.stackexchange.com 询问这个问题以获得更多偏执的意见。
标签: php mysql security web-applications