【问题标题】:secure include files安全包含文件
【发布时间】:2010-08-12 23:59:46
【问题描述】:

我想知道保护包含文件的最佳解决方案。 现在我的解决方案是这样的:

在索引文件中:

define('KEY','security');
include('s.php';

s.php:

if(KEY!='security') exit;

【问题讨论】:

  • 只是因为我偏执我会使用!== 而不是!=。一般来说,我总是使用===!==,除非我有特定的理由不使用,因为使用 php 类型转换规则很容易使用普通的== 出错。

标签: php security include


【解决方案1】:

大多数类似代码的情况甚至不检查已知的键值,而只是检查它是否已定义。

例如,Mediawiki 在包含文件中使用它:

<?php
if( !defined( 'MEDIAWIKI' ) ) {
    die( 1 );
}

【讨论】:

    【解决方案2】:
    order deny,allow
    deny from all
    allow from 127.0.0.1
    

    将这个 .htaccess 放在包含文件中似乎是一个很好的解决方案..

    【讨论】:

    • 我不会专门使用它。我遇到过配置错误的网络服务器(或刚切换到另一个网络服务器之后)忽略 .htaccess 的情况。使用 DEFINE 后卫进行深度防御是个好主意。
    • 一些 HTTP 守护进程不支持这一点,依赖它实际上非常危险。
    【解决方案3】:

    最好的方法是不要将受保护的文件放在文档根目录下(public_html、www、htdocs 等)。您始终可以从文档根目录外部包含 PHP 文件:

    /home/user/public_html/index.php:

    <?php
    
    include('../include.php');
    // /home/user/include.php -- not accessible!
    

    【讨论】:

    • 不幸的是,这并不总是可能的。特别是如果您将软件分发给其他人(这会使设置变得难以正确)或在某些共享主机场景中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2018-10-17
    相关资源
    最近更新 更多