我要创建一个带有用户表的休息服务器以进行登录。移动设备将连接到此服务器以供用户登录。 我想创建一个安全的系统,我想到了这个解决方案:
USERS TABLE:
用户注册:
设备将生成用户提供的密码的SHA256;
哈希将通过SSL发送到服务器;
服务器会将此哈希值存储在 PasswordHash 字段中,并在 PasswordToken 字段中存储随机令牌;
USER LOGIN:
服务器将生成一个BCrypt字符串( hashDevice + serverSideKey )[ bCryptDevice ];
if (bCryptServer == bCryptDevice)
LOGIN OK;
else
LOGIN REFUSED;
那么,这种方法是正确的吗?
安全吗?
我可以避免一些操作吗?
我可以优化一些东西吗?
提前致谢。
答案 0 :(得分:1)
不,不要这样做。
永远不要传递哈希值。必须在服务器上计算哈希值。否则它只是一个密码。
仅使用加密哈希值。 SHA256不是一个。使用bcrypt,scrypt或pbkdf2。
它需要尽可能简单,这样你就不会犯错误,而且会让它变得复杂。