我刚被指派完成具有用户限制访问权限的应用程序的开发。最初的开发人员是合作学生,就像我一样。
在查看他的代码之后,似乎用户只访问了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检查代码。
答案 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)
不幸的是,阿帕奇并不像许多人那样完全安全。我们的想法是让开发人员难以在代码中创建良好的结构和组织。