php框架如何保护动作脚本/数据服务文件?
我想知道框架是如何阻止用户直接访问action/dataservice脚本的 例如,我们转到php框架如何保护动作脚本/数据服务文件?,php,apache,model-view-controller,Php,Apache,Model View Controller,我想知道框架是如何阻止用户直接访问action/dataservice脚本的 例如,我们转到www.test.com/test.html模板test.html调用测试动作.php。是什么阻止用户访问此操作脚本直接驻留的目录 例如www.test.com/index/actions/test\u action.php 如何配置服务器权限,以便只能通过test.html访问test\u action.php 如果我被困在共享托管服务器上的docroot中 如果我正在运行show ~即我的apach
www.test.com/test.html
模板test.html
调用测试动作.php
。是什么阻止用户访问此操作脚本直接驻留的目录
例如www.test.com/index/actions/test\u action.php
如何配置服务器权限,以便只能通过test.html
访问test\u action.php
- 如果我被困在共享托管服务器上的docroot中
- 如果我正在运行show ~即我的apache服务器
entry.php
的文件,该文件声明一个全局常量,然后首先从所有有效的入口点包含该文件,然后在每个受保护的脚本中检查该常量是否存在(IIRC,这是CodeIgniter所做的)一般情况下,建议使用#1。如果这不好,那么#2是非常有效的,而#3在我看来只是俗气而已。如果你什么都不做,并且test#action.php在你的docroot下,用户可以访问它。如果这是不可接受的,有几种方法可以解决这个问题(请注意,如果您的服务器正确安装/配置了PHP,他们将不会看到源代码,只看到源代码的输出) 如果不允许用户直接查看该脚本的输出,则可以选择以下几种方法之一:
entry.php
的文件,该文件声明一个全局常量,然后首先从所有有效的入口点包含该文件,然后在每个受保护的脚本中检查该常量是否存在(IIRC,这是CodeIgniter所做的)一般情况下,建议使用#1。如果这不好,那么#2非常有效,而#3在我看来只是俗气而已。既然您问php框架如何处理这个问题,那么有两种常见的方法:
- 正确的方法:
将所有代码保留在
。基本上,您有一个文档的根目录之外
文件夹,其中只包含/public
,然后包含index.php
' 所有其他php文件都放在include'../application/init.php
之外,无法直接访问DOCUMENT\u ROOT
- 愚蠢的方式
它们在
文件中定义了一个常量,其余所有文件都以:index.php
如果服务器上的php扩展出错,这显然会失败。最终,您的php源代码将对所有人可见defined('SOMETHING') or die('No direct script access.');
顺便说一句,我不建议使用任何特定于apache的方法来处理这个问题,因为您无法确定您的框架将在哪个Web服务器上使用。NginX和Lighttpd都变得非常流行。IIS总是存在的。既然您问php框架如何处理这个问题,有两种常见的方法:
- 正确的方法:
将所有代码保留在
。基本上,您有一个文档的根目录之外
文件夹,其中只包含/public
,然后包含index.php
' 所有其他php文件都放在include'../application/init.php
之外,无法直接访问DOCUMENT\u ROOT
- 愚蠢的方式
它们在
文件中定义了一个常量,其余所有文件都以:index.php
如果服务器上的php扩展出错,这显然会失败。最终,您的php源代码将对所有人可见defined('SOMETHING') or die('No direct script access.');
顺便说一句,我不建议使用任何特定于apache的方法来处理这个问题,因为您无法确定您的框架将在哪个Web服务器上使用。NginX和Lighttpd都变得非常流行。还有IIS。请查看编辑。我只需要多一点关于共享托管案例的信息。@DanKanze,如果您使用的是共享托管,那么源代码的安全性取决于托管本身的安全性。此外,没有任何规则阻止共享主机实现第1点中描述的设置。在一个好的共享主机中,您至少有
/logs
和/www
文件夹。。不应阻止您添加更多文件夹。请查看编辑。我只需要多一点关于共享托管案例的信息。@DanKanze,如果您使用的是共享托管,那么源代码的安全性取决于托管本身的安全性。此外,没有任何规则阻止共享主机实现第1点中描述的设置。在一个好的共享主机中,您至少有/logs
和/www
文件夹。。不应阻止您添加更多文件夹。请查看编辑。我只需要多一点关于共享主机案例的信息。只要您的主机允许,这里的选项2和3在共享情况下可用。htaccess可以拥有此控件,它应该拥有此控件(即,如果没有,则获得新的hos