我想使用ajax()jQuery函数对REST服务进行XHR调用.基本上,这可以正常工作,但REST服务只能通过https访问,并要求客户端使用客户端证书进行身份验证.
如何使用jQuery的ajax()功能发送客户端证书?
我需要实现一个免费的方案(没有SSL证书),它可以满足敏感数据传输,保护和存储的要求,假设相互信任的第三方不可用,也就是说,我们不能使用SSL,TLS等.但是这并不意味着我将自己实施SSL,我仍然希望将加密和解密部分外包给现有代码.
我已经起草了以下方案作为我的帐户和密码保护解决方案:
对我们的攻击者的假设:
完全了解协议.
可以访问常用密码的大型字典.
可以窃听客户端和服务器之间的所有通信.
可以在客户端和服务器之间拦截,修改和伪造任意消息.
可以访问客户端的源代码(包括加密代码).
解决方案:
RSA(分别在客户端和服务器站点加密和解密,公钥可以安全传输,如果密钥是由黑客获取的,则没有风险.)
SHA256/SHA512 /两次MD5(加密用户ID绑定Salt,都存储在服务器站点的数据库中.我在这里使用绑定盐来避免使用通用密码并防止彩虹表.)
注册新用户:
首先在服务器端生成RSA密钥(存储在会话中);
将公钥发送给客户;
将公钥存储在javascript变量中;
在所有后续请求中使用此密钥加密数据并发送到服务器;
使用存储在会话中的私钥来解密服务器端的用户帐户和密码;
使用随机盐的单向加密算法加密密码(如常见:SHA-256强于MD5);
将用户ID,哈希密码和随机盐(用户ID绑定)存储到数据库中(避免使用通用密码并构建特定的彩虹表).
现有用户登录:
首先在服务器端生成RSA密钥(存储在会话中);
将公钥发送给客户;
将公钥存储在javascript变量中;
在所有后续请求中使用此密钥加密数据并发送到服务器;
使用存储在会话中的私钥来解密服务器端的用户帐户和密码;
使用用户帐户从数据库中获取哈希密码和salt;
使用获得的随机盐,使用单向加密算法加密密码;
将加密密码与从数据库中获取的哈希密码进行比较;
确定登录成功或失败.
我是这方面的新手,我确实需要你的一些专业建议?该计划足够安全吗?非常感谢.