【发布时间】:2011-07-26 06:17:57
【问题描述】:
我正在尝试保护一个即将转移到公共服务器的网站。我刚刚将密码散列函数添加到我的所有登录脚本中。我正在使用FormsAuthentication.HashPasswordForStoringInConfigFile(pw, method) 这样做。我对我正在使用的进程以及它对于网络服务器是否安全有疑问:
- 密码通过 HTTPS 以纯文本形式发送到服务器
- 服务器在用户表中查找用户的 Salt(几个随机字符)以及他们的哈希和加盐存储密码
- 纯文本密码附加了 Salt
- 使用上述函数对新字符串进行哈希处理
- 将新散列的版本与存储的版本进行比较
- 如果相等,则允许登录
- 如果不相等,登录尝试会记录在 Session 变量中,最多 3 次,然后锁定用户的计算机,使其无法访问登录页面,直到管理员验证 IP 地址并解锁。
这看起来对吗?我只是看不出盐在这种方法中的效果如何......无论如何,我所做的只是添加盐和哈希。这被认为是加密吗?还是我错过了一步?我记得读过像 SHA1 和 MD5 这样的哈希算法不是加密算法,那么还需要做什么呢?
【问题讨论】:
-
密码永远不应该被加密,它们必须总是被散列。
-
谢谢,你这么说很有趣。当它实际上只是散列时,我一直将这种方法称为“加密”。我对这些东西还很陌生,所以我不知道有很大的不同。刚刚将问题标题从“加密”更改为“散列”
标签: vb.net security hash cryptography