Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 阻止访问公用文件夹中的文件_Php_.htaccess_Security_Server - Fatal编程技术网

Php 阻止访问公用文件夹中的文件

Php 阻止访问公用文件夹中的文件,php,.htaccess,security,server,Php,.htaccess,Security,Server,我创建了一个主要基于HTML和JS的网站。但是,我确实有一些PHP文件,JS会调用这些文件,从当前驻留在服务器公用文件夹中的大型JSON文件中获取信息 我试图阻止任何人直接访问JSON文件,同时允许PHP文件访问JSON文件。为此,我已将.htaccess文件设置为: #<Files database.json> #Order Allow,Deny #Deny from all #</Files> # #命令允许,拒绝 #全盘否定 # 在测试中,从我在网上读到的(或者

我创建了一个主要基于HTML和JS的网站。但是,我确实有一些PHP文件,JS会调用这些文件,从当前驻留在服务器公用文件夹中的大型JSON文件中获取信息

我试图阻止任何人直接访问JSON文件,同时允许PHP文件访问JSON文件。为此,我已将.htaccess文件设置为:

#<Files database.json>
#Order Allow,Deny
#Deny from all
#</Files>
#
#命令允许,拒绝
#全盘否定
#

在测试中,从我在网上读到的(或者更好的是,阅读和理解的)内容来看,这似乎是可行的。但是,我想确定——我是否留下了一个大洞,让某人可以访问json文件?

您不能这样做。JSON请求是一个模拟发出的http请求。因此,如果无法访问JS,则无法访问它,因为这是一种客户端编程语言。

是。但只要您删除所有的
#
。这是注释掉代码,所以它不会执行。值得注意的是,这只是阻止Apache访问JSON文件。还值得注意的是,最好将
JSON
文件存储在提供数据的
public
目录之外,因为您可以向上遍历文件系统来访问它,但Web用户将无法访问它。也许我不清楚,但访问JSON文件的不是我的JS文件,正是PHP文件做到了这一点,这正是您所描述的原因。通过这种方式,您只需删除行前面的#,因为现在它已被注释,无法工作。此外,您还可以设置您的本地ip来访问它:Deny from all Allow from 192.*.#无论您的ip地址是什么