【问题标题】:How to block to call function pages' outside required pages in PHP如何阻止在PHP中调用功能页面的外部所需页面
【发布时间】:2011-11-09 17:31:06
【问题描述】:

我的根目录中有一个简单的配置页面。 类似于wordpress系统中的wp-config.php。它的名字是 config.php (或任何东西)。我的文件中有一些mysql登录或通用页面功能(functions.php)。

当用户调用我的索引页面时,它会加载 config.php(或其他功能页面)。但我想让他们免受外部调用:我想在用户进入 mydomain.com/config.php 时阻止或重定向用户。

1.有没有办法做到这一点?

2。如果是/不是,这对安全性有影响吗?我不知道 安全,但当我想到它时,我会感到困扰。

【问题讨论】:

  • 访问 mydomain.com/config.php 它不会做任何事情。您可以通过检查(例如,调用是否在框架内)或使用 .htaccess 来阻止对页面的直接访问
  • 正如达米安所说。您可以通过将变量定义为某个密码短语来限制 to 框架,并在包含调用 config.php 之前在所有文件中设置该变量。在 config.php 中,您可以检查变量是否已定义并具有正确的值。

标签: php include require-once


【解决方案1】:

首先,不要将可执行代码放入包含的文件中。这样,即使直接调用它们也不会发生任何事情,因为它们定义了类/函数但并不执行它们。

接下来,如果您无法按照@Narf 建议的方式保护它们,您可以使用以下方式开始所有文件:

<?php
  if (!defined('IN_APP')) {
    exit();
  }

然后在你的应用程序中添加define('IN_APP', true)

这样如果你的文件被直接调用,它就会退出。

【讨论】:

    【解决方案2】:

    按照 cmets 中的建议 - 您可以使用 .htaccess 或简单检查预定义变量来限制对这些文件的访问。最好的办法是将这些文件放在 httpd 无法读取的路径中并从那里包含它们。

    您的 webroot 目录(index.php 所在的位置)很可能类似于 /var/www/your_site_dir/htdocs。将它们放在父目录(/var/www/your_site_dir)中,不需要其他限制。

    至于它是否会影响安全性……嗯,这取决于您的代码是如何编写的,但您应该始终限制对这些代码的访问,以防万一。没有一个系统是 100% 安全的,如果有人甚至有条件地可能访问不应该提供给他们的资源,那么也没有一个系统可以被认为是安全的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多