隐藏网站访问者的* .inc.php

时间:2010-05-21 00:48:35

标签: apache mod-rewrite

我有一个脚本myscript.inc.php,它处理所有看起来像/ script-blah的url 我通过使用以下.htaccess

来实现这一目标
RewriteEngine On 
RewriteRule ^script-(.*)$ myscript.inc.php?s=$1 [QSA,L]

但是用户也可以通过键入/myscript.inc.php?s=blah以这种方式访问​​它 我想阻止这一点。我试过了

<Files ~ "\.inc\.php$">
 Order deny,allow
 Deny from all
</Files>

RewriteCond %{REQUEST_URI} \.inc\.php
RewriteRule .* - [F,L,NS]

他们都阻止用户查看/myscript.inc.php?s=blah但他们也会导致/ script-blah返回403 ...

有没有办法正确地做到这一点?

3 个答案:

答案 0 :(得分:5)

我使用以下方法来保护我的.inc.php文件。将以下内容添加到.htaccess:

#Prevent Users From Accessing .inc.php files in .htaccess
<Files ~ ".inc.php$">
Order allow,deny
Deny from all
</Files>

答案 1 :(得分:3)

你也可以尝试以下(许多开源软件包都这样做)

  • 在每个文件夹中放置一个空白index.html
  • 在.htaccess中使用此规则来阻止文件夹阅读Options -Indexes
  • 放置一条线,这条线将导致找不到全局常量的脚本

例如,这里是Kohana's“抛出无效访问”。它是所有PHP文件中的第一行。

<?php defined('SYSPATH') or die('No direct script access.'); ?>

这一行基本上说“如果没有通过index.php包含SYSPATH定义,我们将中止脚本并显示一条友好的消息”

答案 2 :(得分:0)

如果是文件名,您可以重定向

RewriteCond %{REQUEST_FILENAME} =-f