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