【问题标题】:PHP - MySQL Security Issue?PHP - MySQL 安全问题?
【发布时间】:2023-04-06 22:50:01
【问题描述】:

只是想知道这可能是 MySQL 和 PHP 的潜在安全问题:

我在服务器上有一个 connect.php 文件,如果有人使用require(http://myurl.com/connect.php/);,这是否允许他们访问我的数据库?

提前致谢

【问题讨论】:

    标签: php mysql security include require


    【解决方案1】:

    可能不会。如果“某人”从他的服务器执行require(http://myurl.com/connect.php/);(并且启用了通过 http 的包含,请参阅http://www.php.net/manual/en/function.include.php),那么他的服务器连接到您的服务器并获取您的 connect.php 的解释输出 .

    【讨论】:

      【解决方案2】:

      不,但为了提高安全性,最好将敏感文件保存在 Web 根目录之外,以防网络服务器的错误配置破坏 PHP 并将其公开为纯文本。

      【讨论】:

        【解决方案3】:

        不,那将不允许他们连接到您的数据库。当他们通过 Internet 需要您的 connect.php 时,他们会得到此 php 脚本生成的内容作为输出。在您的情况下,您的 php 脚本(connect.php)可能不会产生任何输出(它只是连接到 db 并终止。

        【讨论】:

          【解决方案4】:

          不,PHP 变量无法在客户端访问。例如这样的文件

          <?php
          // Create connection
          $con=mysqli_connect("example.com","peter","abc123","my_db");
          
          // Check connection
          if (mysqli_connect_errno())
            {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
            }
          

          $con 变量将无法公开访问。

          【讨论】:

            【解决方案5】:

            如果您启用了“服务器端包含” - 是的。

            阅读allow_url_include指令:http://www.php.net/manual/en/filesystem.configuration.php

            【讨论】:

            • @BaBL86 能否请您详细说明您认为可能的原因?
            • @user2370460 您需要通过直接 URL 在此文件中打印带有登录名和密码的 PHP 代码。如果有人知道这条路径(并且中文扫描仪已经知道) - 他们可以访问您的数据库。
            • @BaBL86 访问仅设置变量的文件,即浏览器中的&lt;?php $password = 'test'; ?&gt; 将导致空白页,而不是敏感数据的打印输出。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多