我正在将我的文件(pdf、doc、flv等)加载到缓冲区,并使用脚本将它们提供给我的用户。 我需要让我的脚本能够访问该文件,但不允许直接访问该文件。 什么是实现这一点的最佳方法? 我应该在权限方面做些什么,还是使用 .htaccess 锁定目录?
我正在将我的文件(pdf、doc、flv等)加载到缓冲区,并使用脚本将它们提供给我的用户。 我需要让我的脚本能够访问该文件,但不允许直接访问该文件。 什么是实现这一点的最佳方法? 我应该在权限方面做些什么,还是使用 .htaccess 锁定目录?
最安全的方法是像Damien建议的那样,将你想要保留给自己的文件放在网站根目录之外的位置。这种方式可行是因为Web服务器遵循本地文件系统权限而不是自身权限。
然而,有很多托管公司只提供对网站根目录的访问权限。为了防止HTTP请求访问这些文件,可以将它们放入一个独立的目录中,并使用带有阻止所有通信的.htaccess文件。例如:
Order deny,allow
Deny from all
由于目录的本地权限允许Web服务器读取和执行文件,因此您的Web服务器及其服务器端语言仍然可以读取它们。
Allow from 127.0.0.1
将允许你的服务器(包括任何服务器端代码)访问该目录中的文件。更多关于这些内容的文档可在 http://httpd.apache.org/docs/2.4/mod/mod_access_compat.html#allow 找到。 - Sam Bisbee这就是我如何防止从URL直接访问我的ini文件。将以下代码粘贴到根目录下的.htaccess
文件中即可。(无需创建额外的文件夹)
<Files ~ "\.ini$">
Order allow,deny
Deny from all
</Files>
我的settings.ini
文件在根目录下,如果没有以下代码,它会被公开访问:www.mydomain.com/settings.ini。
<Files ~ "\.inc$">
Order allow,deny
Deny from all
</Files>
在重新启动apache之前测试您的配置
service httpd configtest
service httpd graceful
这些文件是否和PHP脚本在同一台服务器上?如果是的话,只需将文件放置在网站根目录之外,并确保您的PHP脚本对它们存储的位置具有读取权限即可。
<Files ~ "\.ini$">
Order allow,deny
Deny from all
</Files>
ServerName YOURSERVERNAMEHERE
<Directory /var/www/>
AllowOverride None
order deny,allow
Options -Indexes FollowSymLinks
</Directory>
如何使用基于自定义模块的.htaccess脚本(例如在CodeIgniter中使用的方式)?我尝试过并且在CodeIgniter应用程序中运行良好。有没有想法可以将其用于其他应用程序?
<IfModule authz_core_module>
Require all denied
</IfModule>
<IfModule !authz_core_module>
Deny from all
</IfModule>