【发布时间】:2014-05-30 16:12:28
【问题描述】:
我试图限制对 /lib 目录中所有 php 文件的直接访问,但允许 web 服务器中的其他 php 脚本访问它们(即 AJAX 调用)。以下内容正确限制了访问,但也阻止了其他 php 文件调用它们:
$HTTP["url"] =~ "^/lib" {
url.access-deny = (".php")
}
有没有办法只阻止直接访问?
【问题讨论】:
-
如果您不希望通过网络访问某些内容,请不要将其放入您网站的文档根目录中。 PHP 完全不受网络服务器级别的限制,可以访问系统上其控制 UID 有权访问的任何文件。
-
使用上面的代码它会阻止一切。甚至我在 /lib 中调用某些东西的文件
-
不可能,php 执行
include('/lib/...')不受网络服务器限制。除非您以include('http://example.com/lib/....')的身份执行此操作,否则效率极低且极不安全。 -
我正在使用
require_once我有一个 AJAX 调用,它简单地显示它从 lib 中的某些内容中获取的启用或禁用。使用上面的代码,它不再起作用。我把它注释掉,它又可以工作了。 -
那么是的,您必须将其公开。而且因为它是ajax,你甚至不能用密码保护它。如果您需要真正保护这些文件的安全,您基本上已经被淹没了。