阻止通过http直接访问文件,但允许php脚本访问

我正在将我的文件(pdf,doc,flv等)加载到缓冲区中,并通过脚本将其提供给我的用户。 我需要我的脚本能够访问文件,但不允许直接访问它。 什么是实现这个最好的方法? 我应该做我的权限或用.htaccesslocking目录吗?

最安全的方法就是把你想要保存的文件放在web根目录之外,就像Damienbuild议的那样。 这是可行的,因为Web服务器遵循本地文件系统特权,而不是它自己的特权。

但是,有很多托pipe公司只能让你访问网站的根目录。 要仍然阻止对这些文件的HTTP请求,请使用阻止所有通信的.htaccess文件将它们自己放到一个目录中。 例如,

Order deny,allow Deny from all 

您的Web服务器以及您的服务器端语言仍然可以读取它们,因为目录的本地权限允许Web服务器读取和执行文件。

干杯。

这就是我阻止从URL直接访问我的ini文件。 将以下代码粘贴到根目录中的.htaccess文件中。 (不需要创build额外的文件夹)

 <Files ~ "\.ini$"> Order allow,deny Deny from all </Files> 

我的settings.ini文件位于根目录下,没有这个代码可以访问www.mydomain.com/settings.ini

这些文件与PHP脚本在同一台服务器上吗? 如果是这样的话,只要将这些文件保存在网站根目录下,并确保您的PHP脚本对于存储的任何地方都具有读取权限。

在httpd.conf中阻止浏览器和wget访问包含文件,特别是说db.inc或config.inc。 请注意,您不能在指令中链接文件types,而是创build多个文件指令。

 <Files ~ "\.inc$"> Order allow,deny Deny from all </Files> 

在重新启动apache之前testing你的configuration

 service httpd configtest 

然后(平稳重启)

 service httpd graceful 

如果你有权访问你的httpd.conf文件(在ubuntu中,它位于/ etc / apache2目录下),你应该将相同的行添加到特定目录下的.htaccess文件中。 那是(例如):

 ServerName YOURSERVERNAMEHERE <Directory /var/www/> AllowOverride None order deny,allow Options -Indexes FollowSymLinks </Directory> 

为每个要控制信息的目录执行此操作,并且您将在一个位置有一个文件来pipe理所有访问。 上面的例子,我做了根目录,/ var / www。

此选项可能不适用于外包托pipe,尤其是共享托pipe。 但是,这是一个比添加许多.htaccess文件更好的select。