【问题标题】:Stop direct access to all files in a folder, but allow ajax requests停止对文件夹中所有文件的直接访问,但允许 ajax 请求
【发布时间】:2014-01-12 03:12:39
【问题描述】:

不确定这是否可能,但是...

假设我有 process/login.php

如果用户直接访问该页面,我会检查用户是否来自发布表单等。如果不是,他们会得到 404'd。

但是我现在正在构建大量的流程脚本等,它们都需要不同的检查,因为有些只是包括在内。

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

我知道有

Options -Indexes

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

如果没有稳定的方法,那么我将手动遍历所有文件并保护它们,但宁愿用户什么都看不到。

【问题讨论】:

标签: php ajax .htaccess security protection


【解决方案1】:

好吧,它不是 100% 防弹的,因为 HTTP REFERRER 可以被欺骗。

试试这个规则:

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

【讨论】:

  • +1 这是您(确实)唯一可以做的事情。它仍然是一个可公开访问的文件。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2014-01-31
      • 1970-01-01
      • 2020-07-24
      • 2014-06-04
      • 2016-10-24
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多