6

对于 PHP 中必需/包含的文件,使用.inc扩展与.inc.php扩展是否更好.php

4

3 回答 3

17

有时人们会使用.inc扩展程序,然后进行一些服务器配置,以防止.inc通过 Web 浏览器访问文件。如果知识渊博的系统管理员绝对正确地完成,这可能会很好,但有一个更好的方法:任何不应该被 Web 用户访问的文件都应该保存在您的文档根目录之外。一旦这些文件离开网络,可以说,你可以使用任何你想要的扩展名。.php绝对是语法突出显示,一般理智等的明智选择。

于 2010-08-02T19:59:25.220 回答
1

Apache 有时(由于错误或严重崩溃)可以将 .php 文件作为文本提供(在共享主机上发生过几次)....我认为您可以使用任何您想要的扩展名,只要您不存储您的公用文件夹中的文件。

假设您的网站在 /home/user/public_html/

创建另一个文件夹 /home/user/lib_php/

有文件:



(1) .../lib_php/one.class.php 与

class one { 
//...
}



(2) .../lib_php/two.function.php 与

function two() { 
//...
}

你有 /public_html 中的主要 index.php

<?php 
include_once('../lib_php/one.class.php');
include_once('../lib_php/two.function.php');

$x=a; $b=two($x); $c=new one; //etc..

或者

 
<?php
require_once('/home/user/lib_php/the.file.php'); 

这样,您将采取一切预防措施,文件无法直接访问,但您的脚本可以使用...

于 2010-08-02T20:22:45.987 回答
1

我个人的偏好是,文档根目录中的任何内容都是 .php 文件,表明它可以由 Web 服务器直接执行,而任何属于库的内容都是存储在并行目录中的 .inc 文件,表明它不能直接执行。

我的标准配置是

/home/sites/example.com/html/- 如果 PHP 失败并提供原始代码,这里的任何内容都是“安全”的

/home/sites/example.com/inc/- 库、带有密码的配置文件(例如带有数据库凭据的数据库连接类)等。任何不应该公开的东西,因为没有理由这样做。

虽然您当然可以将 Apache 配置为拒绝访问 .inc 文件并将它们保存在 webroot 中,但您仍然依赖 Apache 来确保您的安全。如果 PHP 可能在 Apache 中失败并暴露您的代码,那么 .inc 块也可能会失败并暴露您的代码的内部结构。

当然,如果 Apache 咳得满地都是,目录遍历保护也没有理由不失败,让别人去做http://example.com/../inc/seekritpasswords.txt

在某些时候,您只需要接受如果某些内容存储在 Web 服务器上的任何位置,则可能会出现故障,从而允许访问原始数据并暴露所有内容。您想花费多少时间和精力来防止这种情况取决于您。

于 2010-08-02T22:51:27.847 回答