javascript - 将加密的 ID 和密码存储在 cookie 中 - 适用于 GDPR?
问题描述
我有多个应用程序在子域中运行,在我无法控制的父域下。它们都需要登录,它通过发送到我也无法控制的 API 请求来工作。
这样做的缺点是,如果您从一个跳到另一个,它们都需要登录。“单点登录”的解决方案是创建一个需要登录一次的门户网站,然后您可以从那里访问所有这些应用程序。尽管如此,您仍然无法在没有登录的情况下从一个跳转到另一个,但至少您可以通过门户网站这样做。
想法:
1) 登录时加密您的 id 和密码,将存储在门户网站的 cookie 中。
2)一旦访问其他页面,加密的id+密码将被发送到url,然后在访问的应用程序中,将加密值发送到后端(通过我自己创建的API)进行解密。
3)一旦在后端解密,将调用一个 API 请求进行登录(而不是像他们目前那样在前端进行)。
换句话说,我将创建一个后端服务器,发出一个新的 API 请求来接收加密值,解密,然后使用实际的 API 请求进行登录(我无法控制)。
这行得通,还是违反 GDPR?这有点牵强,有更好的方法吗?
(我对这方面不是很有经验)
解决方案
首先,这不是 GDPR 实际研究的主要问题(如果他们这样做的话)。它主要涉及您如何处理用户的数据,您使用它做什么,以及用户对其数据拥有多少权力。当然,这并不详尽,必须考虑很多事情。
但是,至于你的问题:
首先,切勿在 cookie 中存储密码。我的意思是,永远不要存储密码。绝不!甚至加密。但是您可以使用它们来生成用于身份验证的令牌。更多关于这里的信息
其次,使用HTTPS。为什么?那么您应该通过TLS发送您的凭证
最后,由于 TLS,在客户端加密密码对某些人来说毫无意义,但我发现它最终会更安全,只要它不能轻易逆转(请参阅客户端加密)。另一个可以部分回答你的问题。但是,在服务器端解密密码是没有意义的。它甚至会降低您的流程的安全性。实际上,您应该在服务器端使用强大的单向哈希函数对其进行加密,该函数将存储在您的数据库中,并在用户再次尝试登录时用作比较元素。每次他想登录时,都会对发送到服务器的密码进行哈希处理,并将这个哈希值与存储的哈希值进行比较。如果它们匹配,则授予身份验证。如果不是,则拒绝用户访问。所以,实际密码永远不会被存储。
您还可以查看OWASP,它是 Web 应用程序安全的一个很好的资源。
推荐阅读
- database - 有没有办法在不删除 Bigtable 实例(或集群)的情况下删除它,有点混乱测试
- excel - 设置将要粘贴范围的输入框
- javascript - 错误:渲染的钩子比上一次渲染时更多
- go - 嵌套自定义结构的 go-gorm 预加载查询
- postgresql - PostgreSQL + 元数据库连接被拒绝
- database - 在矩阵视觉 Power BI 中保留重复数据
- amazon-web-services - 如何使用 CloudWatch 从 Lex 中找到每天的漏读率?
- javascript - 构建一个“记录/收集”我自己的传入消息并以反应原生方式显示它们的应用程序
- r - 计算每个 ID 在过去一年内的响应总和
- javascript - 何时调用 RTCPeerConnection.onIcecandidate() 事件?