首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从git更改中隐藏敏感信息

从git更改中隐藏敏感信息
EN

Stack Overflow用户
提问于 2015-06-15 19:23:15
回答 3查看 954关注 0票数 1

有没有办法让git隐藏我的敏感信息。例如。

credentials.php (在本地存储库中)。

代码语言:javascript
复制
Line1: $dbname = 'xyz';
Line2: $dbpassword = 'password';

credentials.php (在github存储库和历史中)。

代码语言:javascript
复制
Line1: $dbname = 'xyz';
Line2: $dbpassword = 'xxxxxxxx';

所以git会自动用'x‘隐藏信息。

如果不是通过git,我该怎么做?我试着把我所有的凭证保存在一个地方,但是当你使用第三方库时,当你使用第三方库时,它就变得很难了。

Sidenote:我根本不可能不跟踪credentials.php文件,因为它还可能包含一些需要版本控制的其他逻辑。

注意:,我发现这个职位有一个类似的问题。但对我来说,答案并不令人满意。是否有一种自动的方式来执行“接受的答案”中所说的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-15 19:40:02

你可能要找的是一个过滤器。您可以在.gitattributes文件中设置这些内容,以便在向暂存区域添加文件时运行一个替代,在签出时运行另一个替换:

图像来自吉特书吉特书部分,其中包含如何创建这样一个过滤器的详细信息。

票数 2
EN

Stack Overflow用户

发布于 2015-06-15 19:45:51

解决这一问题的一个常见解决方案是,将一个文件credentials.example.php添加到存储库中,该文件不包含任何真正的凭据,而只包含用于指定它们的通用格式,以便向其他人展示如何创建真正的credentials.php。因为该文件随后通过.gitignore文件被忽略,所以不会添加到存储库中。因此,您可以将您的实际凭证放在那里,以便进行开发甚至部署。

缺点是,当文件更改时,可能需要将格式更改同步到两个文件中。但是,您应该尽量保持这样的凭据(或配置)文件非常简洁,因此不应该更改太频繁。

另一种解决方案是有两个配置文件,比如credentials.default.phpcredentials.user.php,其中前者被签入存储库,后者再次被忽略。然后,该程序尝试加载这两个(顺序),这样您就可以覆盖用户文件中的内容,但不需要重新分配所有内容。因此,如果您有许多默认的配置(它们应该是正确的),那么您可能只需要覆盖几个重要的配置(比如凭据),所以您可以只在用户文件中指定这些配置。

票数 2
EN

Stack Overflow用户

发布于 2015-07-12 03:03:27

最后,我使用了poke's答案的一个变体。请把所有的选票都改投给他的答案。

我使用env变量来解决我的问题。Laravel (我使用它)使用phpdotenv框架来处理env变量。

在我的所有配置文件中,我编写env('USERNAME')env('PASSWORD')等变量,并在项目的根目录中定义一个.env文件。

.env文件的示例内容

代码语言:javascript
复制
USERNAME=rash
PASSWORD=pass
... Other key-value pairs.

在运行时,在配置文件中,所有这些键都由该文件中定义的值替换。

我还定义了一个保存示例数据的.env.example文件。

.env.example文件的示例内容

代码语言:javascript
复制
USERNAME=PUT_USERNAME_HERE
PASSWORD=PUT_PASSWORD_HERE
...

那我就控制这个文件。任何使用我的项目、复制此文件、用自己的值替换所有值并将该文件重命名为.env的用户。然后,该项目顺利进行。

这解决了我的问题,因为:

  1. 配置文件中没有敏感信息。每个conf文件都有诸如env('USERNAME')之类的值。实际的敏感信息在.env文件中。因此,我可以版本控制我的conf文件。
  2. 由于我还传递了.env.example文件,另一端的用户确切地知道需要将什么放在适当的字段中。
  3. 不管我有多少conf文件。我可能有100个文件,但这个解决方案仍然完美无缺。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30853364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档