Apache足以防止未经授权的访问吗?

时间:2015-02-03 22:49:44

标签: web-applications php webserver apache

我刚被指派完成具有用户限制访问权限的应用程序的开发。最初的开发人员是合作学生,就像我一样。

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

即。

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

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

我已经了解了一些关于Apache的知识,我知道它可以限制用户访问某些文件和/或目录。但是,如果我这样做,我不确定它是否足够,以及我是否还应该在index.php中添加一些auth检查代码。

3 个答案:

答案 0 :(得分:1)

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

您可以了解如何使用.htaccess阻止对文件的直接访问,因为一些攻击者会设置后门来获取访问权限,并且必须直接访问后门。 This tutorial可以是了解它的良好开端。

您还可以设置basic privileges using apache,因此只有获得授权的人才能访问。

如果你喜欢修补更多,你可以开始学习使用mod_security来防止一些高级攻击,只要确保你不会因为你自己的配置而遇到麻烦,因为有些配置会触发误报。您可以应用一些free rules from OWASP,以便了解其工作原理。或者,如果您需要更高级的规则,您可以购买official rules from trustwave(是的,它很昂贵),或购买cheaper rules from atomicorp(更便宜,更完整的规则,但有时会产生很多误报)。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

不幸的是,阿帕奇并不像许多人那样完全安全。我们的想法是让开发人员难以在代码中创建良好的结构和组织。

相关问题