Php 拒绝访问MVC目录结构中的专用文件夹
在我的MVC目录结构中有一个私有文件夹,我想拒绝对它的所有访问。只有通过“仅包含”才能访问此文件夹及其包含的文件 对于公用文件夹,任何人都应该能够访问它,因为这是我的视图 root index.php是我的条目文件,它应该能够包含并执行private index.php脚本 有谁能帮我解决这个问题,或者为我指明实现这一目标的正确方向Php 拒绝访问MVC目录结构中的专用文件夹,php,.htaccess,directory-permissions,Php,.htaccess,Directory Permissions,在我的MVC目录结构中有一个私有文件夹,我想拒绝对它的所有访问。只有通过“仅包含”才能访问此文件夹及其包含的文件 对于公用文件夹,任何人都应该能够访问它,因为这是我的视图 root index.php是我的条目文件,它应该能够包含并执行private index.php脚本 有谁能帮我解决这个问题,或者为我指明实现这一目标的正确方向 private model controller core config.ini.php index.php ...
private
model
controller
core
config.ini.php
index.php
...
public
stylesheets
signup.php
login.php
index.php
...
index.php
为您不希望直接访问的所有文件夹添加此.htaccess
<Files *.php>
Order Deny,Allow
Deny from all
</Files>
如果您使用的是Apache,典型的解决方案是在./private中放置一个.htaccess文件,其中包含:
Deny from all
我也同意hakre的观点,那就是它对公共目录下的webroot更有意义
另一种解决方案是将webroot设置为公共的,然后将private移到webroot目录之外
即
其中www是您的webroot。有两种方法:
1:正确的方法
/homedir/-您的网站在哪里
/homedir/private/-您的私有文件所在的位置
/homedir/httpdocs/-网站的公共部分
2:另一种方式
/httpdocs/private/-private文件
/httpdocs/private/.htaccess-订单允许,拒绝拒绝来自所有
/httpdocs/-其余文件
但是,您应该知道,如果您的Web服务器挂起或更改某些特定设置,您的.htaccess文件可能会处于非活动状态
这意味着您的所有私人文件将通过浏览器变得可用
这就是为什么首选第一种方式而不是.htaccess限制
还有什么可能?代码级别限制:
在每个公共php脚本中定义一个常量:
defineMY\u SECRET\u常数,1
在每个私有php脚本中,检查是否在代码的第一行定义了常量:
如果!definedMY_SECRET_常量{die无法直接打开文件。}
将index.php移到公用文件夹中,因为它是您的输入文件。将Web服务器的webroot配置为公用文件夹。做了,你本来应该做的。你的问题是什么?你也写.htaccess。到目前为止你做了什么?除了我第一条评论中的建议外,您还可以将Web服务器配置为拒绝访问某些资源,或者更好地只允许访问您希望允许访问的资源。这样就不容易出错,因为我无法访问直接服务器设置,所以我认为htaccess是我的最佳选择。你能用该域的主机设置指定webroot吗?如果是,请使用第一条评论。如果没有,仍然使用第一条注释,然后查看此处和类似内容:-…好吧,比方说,在webroot中不包含配置文件是一种很好的做法,这样它们就不会被托管。听起来像是先决条件而不是后决条件。还要确保您的应用程序对目录遍历攻击是安全的-请阅读此处了解更多信息:
site/private/...etc...
site/www/index.php
site/www/stylesheets/...etc...