【问题标题】:Sharing of php source files without sharing passwords to SQL server [duplicate]共享php源文件而不共享密码到SQL服务器[重复]
【发布时间】:2025-12-19 17:50:15
【问题描述】:

我们正在使用外部程序员来实现一些代码,只是为了尝试和分配工作负载。该项目使用在线 MySQL 服务器,当我们处理本地文件时也是如此。 MySQL 登录信息存储在一个 php 文件中。当我共享源代码时,我宁愿在信任外部程序员之前不共享登录信息。如果没有数据库访问权限,该站点将无法正常运行。

链接到 MySQL 数据库的最聪明的方法是什么?

到目前为止,我尝试将配置 php 文件上传到 url 并包含它。我发现我可以echo file_get_contents('$url'),但这并没有完成这项工作。 php.ini 设置为允许外部 url。我没有找到任何其他相关建议。

有什么建议吗?

BR,埃米尔

【问题讨论】:

  • 为什么不将凭证放入一个您不共享的单独文件中?为什么不使用 dotenv 之类的技术?
  • ????如果您刚刚开始使用 PHP 并想构建应用程序,我强烈建议您查看各种 development frameworks 以查看是否可以找到适合您的风格和需要。它们有多种风格,从 Fat-Free Framework 这样的轻量级到像 Laravel 这样的更全面。这些为您提供了具体的示例,以及如何编写代码和组织项目文件的指导。 凭证存储是一个已解决的问题。
  • 一般数据库凭据永远不要进入您的源代码,并且应该永远不要检查到版本控制。您必须警惕保持代码和凭据之间的分离。如果您将这些混合在一起,您将面临严重的风险。 .ini.env 类型的文件保存在 Web 根目录之外 绝对是必须的。
  • "php.ini 设置为允许外部 url。"是个超级坏主意。远程代码执行是极其危险的,让人轻松就是自取灭亡。
  • 入门没有错。重要的是你从一开始就坚持一些基本原则。如果你这样做了,你在路上的担心就会少得多。如果你忽略它,你的手上就会一团糟,而且在很多情况下,清理已经为时已晚,因为你已经受到了攻击,一切都被偷走了。这就像学习基本的食品安全实践或电线原理。有很多事情你只是不做来避免风险。

标签: php mysql security


【解决方案1】:

如果您使用某些版本控制系统(例如 git),则不应在代码存储库中存储登录名、密码、api 密钥和其他敏感信息。应忽略具有凭据的文件(添加到 .gitignore)。

在这种情况下,当您将与远程开发人员共享您的代码存储库时,他将不会拥有有关您的生产数据库凭据的任何信息。 (他将使用他自己的本地数据库实例和他的个人凭据)

如果您不使用任何版本控制系统(不推荐)并通过存档共享代码,例如,您可以将文件替换为带有一些占位符的凭据,并为开发人员提供如何操作的说明用他自己的本地凭据替换占位符。

在这两种情况下,您很可能还需要共享一个数据库转储。如果您为此目的有一些测试数据库会很好。

【讨论】:

  • 嗨弗拉基米尔。感谢您抽出宝贵的时间。我正在使用 github 进行版本控制,但数据库是在线的,所以我希望有一种简单的方法来共享凭据,而他却无法真正看到它们,比如从 web 中提取外部文件。但从上面的 cmets 看来,这似乎不是一个选择 - 或者至少不是一个好的选择。我会重新考虑策略。