gpt4 book ai didi

java - 在 java spring web 应用程序中保存安全信息的最佳位置

转载 作者:搜寻专家 更新时间:2023-11-01 03:18:26 24 4
gpt4 key购买 nike

我有使用 java spring 实现的 web 应用程序。基本上应用程序中的每个用户都可以存储一些关键信息。用户输入该数据后,它应该被保留。是否有任何标准方法来存储该安全信息。我可以想到以下位置来存储该信息

1) In database
2) On Webserver as different files for each user. We can encrypt data in those files using some key.

我更喜欢网络服务器作为每个用户的文件。但我有以下问题:

1) Where can we store those files on webserver
2) How can we restrict access to those files?
3) Is there something available in spring to achieve this?
4) What kind of encryption library I can use to achieve this. And where I can store key for each user.
5) How we can sync those files on multiple instances. Is there some standard library for this also?

最佳答案

我不熟悉 Spring,但我最近从事安全文件存储方面的工作,所以我可以说:

我们可以在哪里存储文件?

  • 在服务器上
    您可以将文件存储在服务器上并读取它们,但如果您的服务器已损坏,则攻击者将获取文件
  • 在数据库中
    MySQL 或 MongoDB 等众所周知的 DBMS 允许您存储文件(作为 blob 或 block 集)。

将文件存储在数据库中的优点如下:如果攻击者到达您的服务器,那么他将无法获取文件,他必须找到数据库密码。


我们如何限制对这些文件的访问?

  • 限制最终攻击者的访问权限
    在服务器上创建一个新用户,他是唯一可以访问您的数据库或文件并使用强密码的用户。
  • 限制其他用户访问
    只要求身份验证!但是简单的密码不是很安全......

身份验证

要获得足够强大的身份验证方法,您必须向您的用户询问这 3 个问题中的 2 个:

  1. 你知道什么? (例如密码)
  2. 你有什么? (例如短信电话验证)
  3. 你是什么? (例如指纹、眼睛扫描……)


Not secure enough ? Let's have a quick talk about file encryption ...


我可以使用什么样的加密库来实现这一点。我可以在哪里存储每个用户的 key ?

对于图书馆,我不知道(我深表歉意)但对于加密方法,请保持简单:使用众所周知且高效的算法,如 RSA、AES 或 Triple DES。

如何处理加密?

以下是我与 friend 就文件加密和 key 存储进行的对话的结果:

  • 存储:客户端必须加密文件。然后他将 key 文件名(或文件ID)发送到服务器(server1),并将加密文件发送到另一台服务器(server2)

  • 下载:客户端从server2获取加密文件,读取文件名(或文件ID)并从server1获取正确的key 这样他就可以解密文件了。

最好的办法是使用双因素身份验证(3 个问题中的 2 个)来保护 2 个服务器(12),但这可能会中断用户体验。

希望对你有帮助

关于java - 在 java spring web 应用程序中保存安全信息的最佳位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39447469/

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