我正在寻找一种很好的干净方法来限制在我的CodeIgniter PHP站点中访问直接文件,在nginx上运行。
我在web-root中有一些.phar
和.json
个文件以及一些CodeIgniter无法处理的文件。
如果我要直接在浏览器中输入.php
文件的路径,我正在使用
<?php defined('BASEPATH') OR exit('No direct script access allowed');
拒绝直接访问脚本。但是,攻击者可能会以这种方式映射我的目录结构(如果说他/她发现我使用的是CodeIgniter)。
我想要的是一种限制从Web服务器访问所有内容的方法(在我的例子中是nginx)。一旦投入生产,我就知道我只想让用户使用几个url段。
如何以可扩展的方式限制对这些内容的访问,但仍允许自由检索我的资产?
如果我不包括
,我基本上想要一种保护自己的方法<?php defined('BASEPATH') OR exit('No direct script access allowed');
位于PHP脚本的顶部。这就是我的意思,我的可扩展性。我想可能有一个很好的“一刀切”的解决方案,我可以应用于nginx。
答案 0 :(得分:1)
将不应公开的内容(例如CodeIgniter)放在公共目录之外。
例如,如果您的root是/var/www/htdocs
,那么请将您的内容放在/var/www
中,例如/var/www/codeigniter
。然后,您可以在index.php
中删除/var/www/htdocs
文件,并从那里包含CodeIgniter。
答案 1 :(得分:-1)
请谨慎使用..我不确定您是否希望通过http请求访问您的.json ..
但是您可以在.htaccess文件中执行此操作:
# Prevent direct access to certain filetypes and directories
<Files ~ "(\.(phar|json))$">
Order deny,allow
Deny from all
</Files>
我强烈建议您只需将私人文件放在一个可以chmod的目录中,这样就无法在应用程序之外访问它们,如果这是您想要的。