【问题标题】:Is Apache enough to prevent unauthorized access?Apache 是否足以防止未经授权的访问?
【发布时间】:2015-04-03 23:08:27
【问题描述】:

我刚刚被指派完成一个用户访问受限的应用程序的开发。最初的开发者和我一样都是合作学生。

查看他的代码后,用户似乎只访问过 index.php,而其他 php 页面在验证用户身份并确定请求后使用 Include 语句调用。

include __DIR__ . DIRECTORY_SEPARATOR . 'pages' . DIRECTORY_SEPARATOR . $page . 'Logic.php';

但是,我注意到他的网络应用程序的包含文件中有一条注释,

// Since this page can be accessed if the user knows its
// URL, we must check if user has been authenticated and
// authorized through index.php
// todo

他意识到存在一个漏洞,即可能猜测某些文件名称的用户可以获得未经身份验证的访问权限,他建议在每个包含文件的开头执行额外的授权检查。

我对 Apache 有所了解,我知道它可以限制用户对某些文件和/或目录的访问。但是,如果我这样做了,我不确定它是否足够,并且我是否还应该在 index.php 中的验证检查之外编写一些验证检查。

【问题讨论】:

  • 如果有问题的 PHP 文件不应该被用户直接访问,使用 apache 的 .htaccess 文件禁止访问就足够了。检查 PHP 文件本身可能仍然有用,例如,如果网站被移动到不支持 .htaccess 的主机。

标签: web-applications php webserver apache


【解决方案1】:

如果配置得当,Apache 本身稍作调整就可以处理一些基本攻击。

您可以了解如何使用 .htaccess 来防止对文件的直接访问,因为一些攻击者会放置后门来获得访问权限,而他们必须直接访问后门。 This tutorial 可以作为了解它的良好开端。

您也可以设置basic privileges using apache,这样只有授权的人才能访问。

如果你喜欢更多的修补,你可以开始学习使用mod_security来防止一些高级攻击,只要确保你不会因为自己的配置而陷入困境,因为某些配置会触发错误积极的一面。你可以申请一些free rules from OWASP,这样你就可以了解它是如何工作的。或者如果你需要更高级的规则,你可以购买official rules from trustwave(是的,它很贵),或者购买cheaper rules from atomicorp(更便宜,更完整的规则,但有时会给出很多误报)。

【讨论】:

    【解决方案2】:

    如果禁用 php 引擎并直接访问页面目录下的任何 URL,无论是在主配置中还是在 .htaccess 文件中,那么这足以防止人们在不通过 index.php 页面的情况下访问页面。但是从你的描述来看,情况并非如此。此外,即使有这些限制,它也不是一个非常安全的架构,但您需要多少安全性取决于您要保护的内容 - 而您没有告诉我们任何相关信息。

    为每个脚本添加身份验证是解决问题的一种非常糟糕的方法。

    【讨论】:

      【解决方案3】:

      不幸的是,Apache 并不像许多人那样是完全安全的。这个想法是为了让开发者很难,在你的代码中创建良好的结构和组织。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-14
        • 1970-01-01
        • 2013-08-23
        • 1970-01-01
        • 2020-01-18
        相关资源
        最近更新 更多