Php 科哈纳:是否需要检查是否定义了SYSPATH?

Php 科哈纳:是否需要检查是否定义了SYSPATH?,php,kohana,Php,Kohana,我是CodeIgniter的用户,我正在看Kohana。我注意到的第一件事是,在文档中,每个片段都以以下开头: <?php defined('SYSPATH') or die('No direct script access.'); 它用于确保您只能通过index.php(其中定义了SYSPATH)访问脚本 如果脚本文件位于可通过web访问的位置,则这是另一个安全层。此检查将阻止人们执行以下类 实际上,这些文件应该在webroot之外,index.php引用了正确的位置,但这并不总是可能

我是CodeIgniter的用户,我正在看Kohana。我注意到的第一件事是,在文档中,每个片段都以以下开头:

<?php defined('SYSPATH') or die('No direct script access.');

它用于确保您只能通过index.php(其中定义了SYSPATH)访问脚本

如果脚本文件位于可通过web访问的位置,则这是另一个安全层。此检查将阻止人们执行以下类

实际上,这些文件应该在webroot之外,index.php引用了正确的位置,但这并不总是可能的,所以它们会进行检查


如果你有.htaccess保护这些目录,我想你可以省去它,但它不需要任何费用,所以你最好保留它。

如果你使用.htaccess文件保护你的系统文件,这是不必要的。但是,由于kohana必须支持非.htaccess使用,我们将其放在核心系统文件中,以实现一些基本的安全性。

我为您详细介绍了答案。这也是一个很好的答案,将您的系统和模块文件保存在webroot之外是最好的安全措施。+1很高兴让Kohana Framework开发人员自己解决这个问题。CodeIgniter也这样做:如果(!defined('BASEPATH'))退出('No direct script access allowed');