【问题标题】:Allow access to file ONLY FROM specific PHP file/ dir on same server仅允许从同一服务器上的特定 PHP 文件/目录访问文件
【发布时间】:2015-02-20 21:15:01
【问题描述】:

我一直在努力寻找一种解决方案来拒绝访问所有 AJAX/PHP/浏览器内请求的文件,除非它们来自同一个(其他)目录/文件服务器。 我在 JSON 文件的目录中有一个 .htaccess。该文件由 CMS 插件获取,如下所示(非常标准):

  1. Javascript 对服务器上名为 handler.php 的 PHP 文件进行 AJAX 调用。
  2. handler.php 然后取回文件内容,返回给JS。

我不能使用重写规则,因为它不是先决条件。对于 CMS。我也无法设置已知域名,因为它是动态的。理想情况下,我会做Allow from SELF
我没有运气尝试过以下 .htaccess 配置:

Order Deny, Allow
Deny from all
Allow From <ownDomainName/subpath>

或者:

Order Deny, Allow
Deny from all
Allow From <ownDomainName/subpath/fileName.ext>

我也尝试过使用setEnv 指令,以及其他涉及使用&lt;Files&gt;&lt;Directory&gt;&lt;Location&gt; 的混合指令。如果我只是Deny from All PHP 无法访问它。是否有任何解决方案可以限制对 JSON 文件的访问? 另外,这与我在localhost 上进行测试有关吗?

【问题讨论】:

  • 您的问题是“我无法设置已知域名”,但是在您的两个示例中,您引用了一个域名?
  • @greg_diesel 你的问题很中肯,但我尝试了我找到的可能的解决方案,但这些都不允许使用“通配符”,例如某些东西。像$_SERVER['SERVER_ADDR'] for PHP...
  • 如果 header.php 正在打开 yourfile.json 并将结果输出到 ajax 客户端...用户可以在浏览器中读取 header.php 的结果(这是您的秘密 json),只需稍微调查一下。
  • 看起来首先你需要了解 HTTP 请求与通过文件系统访问文件之间的区别。
  • 这就是我刚刚所做的!我通过 URL 而不是 FS 相对路径发送数据,因为我将 .htaccess 设置为 Allow from all shame,这恰好在之前起作用。现在都好了

标签: php ajax apache .htaccess


【解决方案1】:

文件有两种访问方式。

  1. 来自应用 .htaccess 规则或服务器 (apache) 配置的 Web。
  2. 通过在应用文件系统权限的服务器计算机上运行的应用程序或脚本。

因此您可以拒绝 .htaccess 文件中的所有请求,但 PHP 脚本仍然可以通过 FS 访问该文件(取决于 FS 权限)。

【讨论】:

  • 他说:“我不能使用重写规则”
猜你喜欢
  • 2018-08-24
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多