如何保护带有.htaccess的php文件不被php5下载

如何保护带有.htaccess的php文件不被php5下载,php,.htaccess,Php,.htaccess,昨晚我对我的Web服务器做了一些管理更改。我使用php。php处理器在更新后出现故障,如果有人访问我的主页,php页面只需下载并向任何访问的人显示专有代码和密码。所以我想知道是否有一种方法可以防止使用.htaccess下载任何形式的php文件,但仍然允许正常查看文件。这里的问题是.htaccess正在为用户提供文件,或者不是。您不能告诉它拒绝访问.php文件,因为在正常使用期间,访问也将被拒绝。如果PHP处理器运行不正常,则不会出现回退行为 在做这样的大事时,可能值得暂时将web根目录移动到“维

昨晚我对我的Web服务器做了一些管理更改。我使用php。php处理器在更新后出现故障,如果有人访问我的主页,php页面只需下载并向任何访问的人显示专有代码和密码。所以我想知道是否有一种方法可以防止使用.htaccess下载任何形式的php文件,但仍然允许正常查看文件。

这里的问题是.htaccess正在为用户提供文件,或者不是。您不能告诉它拒绝访问
.php
文件,因为在正常使用期间,访问也将被拒绝。如果PHP处理器运行不正常,则不会出现回退行为


在做这样的大事时,可能值得暂时将web根目录移动到“维护中”的站点,以尽可能降低风险。

在开发过程中遵循的一个好模式是使用一个最小的初始化文件,该文件调用驻留在webroot之外的实际应用程序。这样,在这样的情况下,只有一个没有关键信息的最小存根被公开

<FilesMatch ".*\.php">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>
<IfModule php5_module>
    <FilesMatch ".*\.php">
        Allow from all
        Satisfy All
    </FilesMatch>
</IfModule>
简化示例:

/
  /app
    critical_code.php
  /webroot
    .htaccess   <- rewrites all requests to index.php
    index.php   <- invokes ../app/critical_code.php (or other files as requested)
/
/应用程序
critical_code.php
/网根

.htaccess假设您使用的是Apache,.htaccess文件的外观如下所示

<FilesMatch ".*\.php">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>
<IfModule php5_module>
    <FilesMatch ".*\.php">
        Allow from all
        Satisfy All
    </FilesMatch>
</IfModule>

命令允许,拒绝
全盘否定
满足所有
通融
满足所有
第一条规则拒绝访问所有.php文件。默认情况下,用户将看到403(禁止)错误


如果PHP5模块成功加载,第二条规则将生效,这将授予访问权限。

此外,将密码保存在docroot之外的include文件中总是一个好主意,正是因为这个风险。@Andrew:哦,我甚至没有注意到提到密码。我以为他只是担心人们看到他的代码。是的,伊克斯。