2013-12-23 71 views
2

不知道这是可能的,但...停止文件夹中直接访问所有文件,但允许Ajax请求

可以说我有流程/ login.php中

如果用户访问该页面直接我有一个检查,看看用户是否来自张贴表格等。如果不是,他们会得到404'd。

但我现在建立大量的过程脚本等,他们都需要不同的检查,因为有些只是包括等

有没有办法来404用户,如果他们直接访问任何文件?使用htaccess?

我知道有

Options -Indexes 

但是,只有停止文件的显示。您仍然可以直接访问任何文件。

如果没有一个稳定的方式做它,那么我会手动绕过所有的文件,并保护它们,但宁愿用户不能看到任何东西。

+0

为我工作一个基于PHP的解决方案可以在这里找到: http://stackoverflow.com/a/23449295/2883501 –

回答

3

确保它不是100%防弹,因为HTTP REFERRER可能被欺骗。

试试这个规则:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com/ [NC] 
RewriteRule ^process/login\.php$ - [F,NC] 
+1

+1这是你可以(确实)唯一要做的事情。它仍然是一个可公开访问的文件。 – 2013-12-23 21:27:41

2

我会建议使用会话。如果会话无效,您可以检查适当的会话并重定向。

此外,我会试图抛出404错误,我会简单地将它们重定向到您的主页。 404是您的服务器(Apache,Nginx等)在接收到无法处理的GET请求时抛出的特定错误。您不应该通过从后端代码发送404来“欺骗”这些错误。这样做会使您的服务器错误日志中出现“噪音”。

1

检查if (empty($_POST))如果条件符合,则重定向到您的主页。这将确保您的表单处理代码已被发送到。

相关问题