gpt4 book ai didi

security - 我应该如何在我的服务器上保存加密的用户数据,并将其仅提供给正确的用户?

转载 作者:行者123 更新时间:2023-12-04 22:37:26 24 4
gpt4 key购买 nike

假设我必须存储用户的敏感数据,这些数据在客户端可选地被加密。

  • 加密(可选)应使用用户的 密码 .
  • 用户登录(可选)应使用用户的 完成密码 .

  • 笔记:
    纯文本密码不存储在服务器上或通过网络传输。

    我的选择及其缺点:

    1. 无认证,客户端授权:
    服务器将数据提供给每个人,但只有原始用户有解码的手段。
    可以使用数据任何人尝试破解加密 - 不是保护它的最佳方法。

    2.服务器端认证,无授权:
    服务器存储用户访问数据的密码,并且只将数据提供给能够提供正确密码的用户。
    用户不信任网络传输数据 未加密 .

    3、认证授权:
    服务器存储用户密码以访问加密数据,加密是使用与用户密码不同的密码来完成的。
    安全性好,但用户不想记住 两个密码 .

    4. 认证与授权:
    服务器存储用户密码以访问加密数据,加密是使用相同的密码完成的。
    用户很高兴。一些安全问题。

    我更喜欢最新的第四个选项,但我担心的是:
    如果服务器被攻破怎么办,如何确定不能同时使用加密密码和加密数据来破解加密?
    如何使破解加密变得更加困难?

    一些想法:
  • 对密码和数据使用不同的加密算法。
  • 加密前将固定字符串添加到用户密码的末尾。
  • 将用户密码填充到一定长度。


  • 编辑:

    该系统应该非常类似于一个从各个方面都应该安全的备份系统:服务器不应该能够读取数据,只有原始客户端应该能够访问数据,并且应该防止中间人攻击。因此,如果有人破解了服务器身份验证或客户端加密,则不应泄露数据。

    它应该是基于 Web 的,因此应该使用 HTTPS 防止中间人攻击。

    为了防止服务器黑客泄露数据,数据在客户端被加密。

    为防止客户端加密篡改,应在服务器端使用一些登录名和密码或 token (可能是唯一的 URL)来保护对数据的访问。

    最佳答案

    @Vitaly,请允许我在回答之前澄清一些术语,因为您似乎对某些术语使用了与常用术语不同的含义。
    Authentication - 证明你是谁的过程(更准确地说,你拥有你声称的身份)。Authorization - 用于限制、控制和授予访问权限的机制。Encryption - 一种保护数据的机制,即使有人有权访问它。

    现在,请允许我重新表述您的选择,然后我会提出其他建议:

  • 无认证、无授权、客户端加密
  • 服务端认证、服务端授权、服务端加密
  • 服务端认证、服务端授权、客户端加密
  • 服务器端身份验证、服务器端授权、使用服务器凭据的客户端加密。

  • 现在,我认为每个人的立场可以更清楚。
    一般来说,你真的想遵循“深度防御”的“最佳实践”(不要让我开始那些)原则,即不要只使用加密,或只使用访问控制,而是同时使用!但是,正如您所指出的,这可能与另一个原则“保持安全性简单”形成对比(如果用户需要记住两个密码)。

    没有试图太烦人,你没有在你的环境中提供太多信息。例如,这是吗?一个网络应用程序?如果是这样,为什么 SSL/TLS 对您来说不够加密?或者这是用户上传您(和您的系统)不应该看到的个人数据的问题(例如备份类型的服务)?在这种情况下,客户端加密将是必要的......

    因此,(最后)我提出的选项,取决于您的环境/要求:
  • 如果可以,请依靠安全协议(protocol)(例如 SSL/TLS)进行加密。使用服务器端认证+授权,协议(protocol)加密。
  • 如果您的系统需要进一步保护这些数据,例如信用卡(请注意,我目前不是 PCI:QSA ;)),使用上一个选项,此外还使用服务器生成的加密 key (不是密码)进行服务器端加密(当然要保护它)。
  • 如果需要从您的系统中保护数据,则除了服务器端身份验证+授权之外,您还需要进行客户端加密(您的选项 3,正如我重申的那样)。
    但是,您不一定需要强制用户记住额外的密码/短语。同样,根据您的环境,您可能可以考虑存储在客户端上的某种形式的 key ,例如用户证书存储/ key 环中的证书,甚至存储在 protected 配置文件中;基于生物特征数据的 key (并不容易,但我已经成功地完成了这项工作,尽管它有自己的一系列问题),带外 key 分配(例如通过手机)等。这将使你们都能够使用强 key ,防止服务器访问这些 key ,不要求用户记住两个 key ,并且不会在不同的上下文中重复使用单个密码以用于不同的用途。
  • 关于security - 我应该如何在我的服务器上保存加密的用户数据,并将其仅提供给正确的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3649615/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com