根据我的理解,在CI中,出于安全原因,我们必须编写这行代码
defined('BASEPATH') OR exit('No direct script access allowed');
放置在每个控制器页面的顶部,以防止该页面在控制器上单独运行。
然而,我想知道是否有必要在每个视图和模型页面上编写此代码?正如我在google和stackoverflow上搜索过的,没有人在视图和模型页面上清楚地解释。
提前感谢
不,你不一定需要这样做。
CodeIgniter库存文件有这一行,因为它试图在几乎为零配置的情况下运行,这通常意味着用户已将所有内容放在web浏览器下。
但话虽如此,这并不意味着你的设置应该像那样。恰恰相反——只有您的index.php文件可以通过web访问,如果您这样做了,这些行就无关紧要了。
当然,你可以通过Apache中的。htaccess规则或nginx下的适当location
块拒绝访问框架文件。
是的,出于安全考虑,这是必要的。它用于禁止直接访问您的views
&通过浏览器获取models
文件。如果你不包含这个,任何人都可以通过浏览器访问你的文件,这是一个风险。
但是,您可以通过以下代码
禁止通过application
目录中的.htaccess
直接访问您的文件<IfModule authz_core_module>
Require all denied
</IfModule>
<IfModule !authz_core_module>
Deny from all
</IfModule>
添加
总是更安全 defined('BASEPATH') OR exit('No direct script access allowed');
在你的模型和视图,因为如果你的服务器不允许。htaccess或它被覆盖的脚本可以被访问。