我们有一个网站www.domain1.com,注册用户的用户名/密码对存储在domain1_db中。
我们将有另一个独立域(www.domain2.com),如果用户尝试登录到domain2,用户名/密码将发送到domain1,与domain1_db核对,如果用户存在且密码为真,则将使用用户名/密码和布尔值(真或假)将响应发送给domain2。
为了un+pw对的安全性,同时在domain1和domain2之间发送它。我已经评估了三种选择:
我想评估这些选择:
发布于 2015-11-23 13:38:02
发布于 2015-12-04 06:08:25
弱点在于钥匙和钥匙的交换。我假设您将在每个选项中使用强键。
如果您控制这两台机器,并可以使用带外密钥交换(拇指驱动器上的运动鞋,等等)然后对称密码(例如AES)将更快、更安全。
非对称密码(例如RSA)在Diffie-Hellman密钥交换过程中很弱,这就是SSL不再安全的原因,而且每个人都已经转移到TLS。然而,非对称密码解决了“我不能控制两台机器”的问题,所以我们容忍它稍微不那么安全。
自签名证书是最糟糕的选择,因为如果您不控制这两台机器,它只会失败或抛出警告。如果您控制这两台机器,只需使用AES。
对于SSL和TLS,RSA只被简单地使用。只需要足够长的时间来交换对称密钥。在那之后一切都是对称密码。
发布于 2015-11-23 19:36:37
在站点之间发送用户名/密码时使用HTTPS就足以保护凭据的传输。
这里真正的问题是,为什么首先需要将密码发送回domain2?如果domain2信任domain1来验证用户名和密码,那么它所需要的只是结果(有效用户与否)以及一些额外的信息,比如用户名和电子邮件地址等等。它不应该需要用户的密码。
此外,domain1不应该以可以检索密码的方式存储密码。密码需要存储在盐渍杂碎表单中。
一种更好的方法是使用外部身份提供者为两个站点提供单点登录(SSO),因此您根本不必费心存储密码。
https://stackoverflow.com/questions/33871712
复制相似问题