【问题标题】:PHP - remote database connectionPHP - 远程数据库连接
【发布时间】:2018-01-04 22:37:05
【问题描述】:

我有一个混合应用程序,它使用与便携式服务器相关的数据库中的信息运行。

我需要从我的网络服务器(与上一个不同)检索信息,但我不知道该怎么做。

我有一个配置文件,其中包含在 WEB SERVER 中建立数据库连接的信息和功能。

我要做的是将此 config.php 文件包含到应用程序文件中,以建立应用程序服务器与 Web 数据库的连接。

我试过 cURL 没有成功。

【问题讨论】:

  • 那么您有两台服务器——一台是Web 和数据库服务器,另一台是单独的应用程序服务器?您想从应用程序服务器连接到 Web 服务器的数据库吗?您不能为远程包含提供 config.php,因为它将被解析为代码而不显示变量。否则配置它将是一个重大的安全挑战。
  • @MichaelBerkowski 就是这样。而且我不知道该怎么做,这就是为什么我在这里寻求帮助--'
  • 如果 Web / 数据库服务器被配置为接受远程数据库连接(通常通过防火墙规则限制 IP),那么应用程序服务器需要拥有自己的连接凭据副本。它们不能轻易共享。一种可能性是自动化两台服务器之间的 SSH 连接以安全地检索文件,但这会非常慢。我不会推荐或尝试它。

标签: php database


【解决方案1】:

所以,如果我的理解正确,您想在两个“主机”之间动态交换数据库连接的配置吗?目前您正在尝试通过 cURL 下载 config.php 文件?这是行不通的,如果您通过 cURL 访问 config.php,它会由网络服务器处理,因此您可能会得到一个空响应,因为 config.php 没有输出。

对此有一些解决方案,但我有严重的安全问题。如果您在没有通过“网络服务”提供任何安全措施的情况下进行数据库配置,这可能会导致非常严重的问题,例如数据泄露等。

请不要在生产环境中使用以下内容。

关键是你必须建立一个数组/对象来保存你需要的所有数据。然后您必须对其进行序列化并将其传输到第二台主机。

执行此操作的一种非常简单且非常不安全的方法是编写一个新脚本,该脚本可以通过 GET 请求访问,该请求以序列化对象响应。在另一台主机上,您可以简单地反序列化响应,并且您拥有包含您的配置的对象。

您从远程主机访问的文件:

<?php
// Build your config array / object
$config["url"] = "your.database.host.com";
$config["port"] = "The port you use";
$config["other"] = "other stuff you want to transmit";
// serialize it and output it
echo serialize($config);
?>

您的远程主机脚本:

<?php
// get the response with your config
$content = file_get_contents("<your host>");
// unserialisze it
$config = unserialize($content);
// database stuff
?>

我敦促您不要在没有适当安全概念的情况下传输此类敏感信息。也许您可以使用 ssh 来复制文件或构建具有身份验证和验证功能的适当 REST API。

【讨论】:

    猜你喜欢
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2014-08-26
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多