我有一个脚本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 ...
有没有办法正确地做到这一点?
答案 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
Options -Indexes
例如,这里是Kohana's“抛出无效访问”。它是所有PHP文件中的第一行。
<?php defined('SYSPATH') or die('No direct script access.'); ?>
这一行基本上说“如果没有通过index.php包含SYSPATH定义,我们将中止脚本并显示一条友好的消息”
答案 2 :(得分:0)
如果是文件名,您可以重定向
RewriteCond %{REQUEST_FILENAME} =-f