我正在开发一个Laravel应用,该应用应允许用户手动将集成添加到第三方API和数据库。使用API很容易:您只需要存储令牌。但是用户也应该能够添加与自己的数据库(如MySQL)的集成。为此,我需要存储主机,用户,密码,基本上是所有凭据。我遇到的问题是找到一种正确且安全的方式来存储这些凭据。
我当时正在考虑将所有连接存储在connections
表中,并将凭据添加到connection_parameters
JSON类型字段中(这样可以提高灵活性,并且可以将不同类型的连接存储在同一张表),并使用模型上的$hidden
属性隐藏详细信息。这将是迈向安全存储它们的第一步,但我不确定是否足够。
您有没有可以向我解释的建议或做法?
答案 0 :(得分:0)
我可以看到您主要关心的是隐藏来自第三方的敏感数据。除非有人以某种方式访问您的数据库,否则您的工作已经“确定”。您可能希望像对待用户密码一样对待这些字段,因为它们还包含凭据。
一种方法是在存储之前对其进行加密。 Laravel开箱即用https://laravel.com/docs/5.8/encryption进行加密/解密。
另一种解决方案是将每个用户的凭据存储在文件中,然后将文件存储在公共目录以外的任何目录中(例如:/storage/connections
)。这样,只有您可以访问这些文件。每个文件都可以命名为user_1234
1234之类的用户ID。因此很容易检索。