【问题标题】:Why needed own php files security, when already given .htaccesss security?为什么需要自己的 php 文件安全性,当已经给予 .htaccesss 安全性?
【发布时间】:2017-08-05 18:30:51
【问题描述】:

在kohana框架中,.htaccess文件被写入

#保护应用程序和系统文件不被查看

RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

好的,但是为什么在每个 php 文件中都需要这种安全性:

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

攻击者已经无法直接打开任何.php 文件,对吧? (因为原因是受.htaccess RewriteRule 的保护)

【问题讨论】:

  • 即使没有SYSPATH 保护,PHP 文件也不应该真的有问题(它们在评估时不会做任何事情),所以特别是对于那些人来说,这就像双重矫枉过正。但也许那里也有非 PHP 文件?

标签: php kohana


【解决方案1】:

Simpy:这是一个后备。仅此而已,但我需要更多字符才能发布此答案

【讨论】:

    【解决方案2】:

    似乎开发人员希望确保没有文件可以访问,无论 .htaccess 是否有效(即禁用 mod_rewrite)。

    但是对于只包含类定义或返回/定义配置数组的文件,无论如何它都没什么用,因为它们不输出任何东西。

    【讨论】:

    • > 似乎开发人员希望确保没有文件可以访问,无论 .htaccess 是否有效(即禁用 mod_rewrite)。 ----- 但是在这种情况下,路由也不起作用,也就是说,如果 mod_rewrite disabled ,框架将无法成功,对吧?
    • 我不确定我是否理解正确,但即使框架运行需要 .htaccess 配置,也有可能是公共可访问但不完整或不正确的安装。这就是他们试图在这里解决的问题。
    • mod_rewrite 被禁用时,它会因为未知指令而完全中断。你的意思可能是AllowOverride
    • @KingCrunch Kohana 不在他们的.htaccess 中使用IfModule
    • 框架在不启用重写的情况下工作正常。您最终会在您的网址中添加index.php 段。
    【解决方案3】:

    您无法确定 - 从框架开发人员的角度来看 - 运行您的产品的网络服务器是否已正确设置(例如,.htaccess/RewriteEngine 未由 AllowOverride 启用或没有 mod_rewrite ... )。

    这种“第二次检查”是为了​​确保框架即使在主机设置错误的情况下也不会泄露敏感数据。

    【讨论】:

      【解决方案4】:

      .htaccess 仅适用于启用mod_rewriteApache。如果服务器不满足这些条件中的任何一个,那么SYSPATH 检查就会派上用场。

      注意:并非每个用户都可以将 Aapche 用作网络服务器。并不是每个用户都可以访问.htaccess

      现在还有其他选择。比如,nginx。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-29
        • 2011-04-20
        相关资源
        最近更新 更多