我正在努力保护一个即将转移到公共服务器上的网站。 我刚刚完成了在所有登录脚本中添加密码哈希函数的工作。 我正在使用 FormsAuthentication.HashPasswordForStoringInConfigFile(pw, method)
来实现此目的。 我对自己使用的流程以及它是否安全有一个问题:
- 密码以明文形式通过HTTPS发送到服务器
- 服务器查找Users表,以查找用户的Salt(几个随机字符)和其散列和盐存储的密码
- 明文密码附加在盐中
- 使用上述函数对新字符串进行哈希处理
- 新哈希版本与存储的版本进行比较
- 如果相等,则允许登录
- 如果不相等,则登录尝试记录在会话变量中,最多尝试3次,在管理员验证IP地址并解锁之前,该用户的机器将被锁定无法访问登录页面。
这看起来正确吗?我只是不明白Salt在此方法中如何有效...无论如何,我所做的就是添加一些盐和哈希。 这是否被认为是加密?还是我错过了什么步骤?我记得读到哈希算法(如SHA1和MD5)不是加密算法,那么还需要做什么?