首页 > 解决方案 > 将加密的 ID 和密码存储在 cookie 中 - 适用于 GDPR?

问题描述

我有多个应用程序在子域中运行,在我无法控制的父域下。它们都需要登录,它通过发送到我也无法控制的 API 请求来工作。

这样做的缺点是,如果您从一个跳到另一个,它们都需要登录。“单点登录”的解决方案是创建一个需要登录一次的门户网站,然后您可以从那里访问所有这些应用程序。尽管如此,您仍然无法在没有登录的情况下从一个跳转到另一个,但至少您可以通过门户网站这样做。

想法:

1) 登录时加密您的 id 和密码,将存储在门户网站的 cookie 中。

2)一旦访问其他页面,加密的id+密码将被发送到url,然后在访问的应用程序中,将加密值发送到后端(通过我自己创建的API)进行解密。

3)一旦在后端解密,将调用一个 API 请求进行登录(而不是像他们目前那样在前端进行)。


换句话说,我将创建一个后端服务器,发出一个新的 API 请求来接收加密值,解密,然后使用实际的 API 请求进行登录(我无法控制)。

这行得通,还是违反 GDPR?这有点牵强,有更好的方法吗?

(我对这方面不是很有经验)

标签: javascriptapisecurityencryptioncookies

解决方案


首先,这不是 GDPR 实际研究的主要问题(如果他们这样做的话)。它主要涉及您如何处理用户的数据,您使用它做什么,以及用户对其数据拥有多少权力。当然,这并不详尽,必须考虑很多事情。

但是,至于你的问题:

首先,切勿在 cookie 中存储密码。我的意思是,永远不要存储密码。绝不!甚至加密。但是您可以使用它们来生成用于身份验证的令牌。更多关于这里的信息

其次,使用HTTPS。为什么?那么您应该通过TLS发送您的凭证

最后,由于 TLS,在客户端加密密码对某些人来说毫无意义,但我发现它最终会更安全,只要它不能轻易逆转(请参阅客户端加密)。另一个可以部分回答你的问题。但是,在服务器端解密密码是没有意义的。它甚至会降低您的流程的安全性。实际上,您应该在服务器端使用强大的单向哈希函数对其进行加密,该函数将存储在您的数据库中,并在用户再次尝试登录时用作比较元素。每次他想登录时,都会对发送到服务器的密码进行哈希处理,并将这个哈希值与存储的哈希值进行比较。如果它们匹配,则授予身份验证。如果不是,则拒绝用户访问。所以,实际密码永远不会被存储

您还可以查看OWASP,它是 Web 应用程序安全的一个很好的资源。


推荐阅读