【问题标题】:Kohana: Is it necessary to check if SYSPATH is defined?Kohana:是否有必要检查 SYSPATH 是否已定义?
【发布时间】:2010-02-13 17:32:49
【问题描述】:

我是 CodeIgniter 用户,我正在研究 Kohana。我注意到的第一件事是,在文档中,每个 sn-p 都以:

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

假设我将使用 .htaccess 进行地址重写,这真的有必要吗?为了避免直接访问,它是 .htaccess 的替代品吗?这只是“纵深防御”的好习惯吗?

【问题讨论】:

  • CodeIgniter 也这样做: if ( !defined('BASEPATH')) exit('No direct script access allowed');

标签: php kohana


【解决方案1】:

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

【讨论】:

  • +1 很高兴 Kohana 框架开发人员自己解决这个问题。
【解决方案2】:

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

如果您的脚本文件位于可通过 Web 访问的位置,这是另一层安全保护。此检查将阻止人们执行 http://example.com/application/classes/controllers/welcome.php 之类的类

实际上,这些文件应该位于 webroot 之外,并且 index.php 引用了正确的位置,但这并不总是可能的,因此他们进行了检查。

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

【讨论】:

  • 我为你扩展了答案。
  • 这也是一个很好的答案,将您的系统和模块文件保存在 webroot 之外对它们来说是最好的安全措施。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多