可以通过url调用但由于缺少包含而无法编译的子页面是否存在任何危险?

信息安全 php 用户管理
2021-09-07 06:32:43

我有一个基本上使用以下结构的网页:

index.php
functions.php
pages/a.php
pages/b.php
...

当我调用 index.php 时,会提示用户登录或通过 session-id 自动登录。当导航中的点击完成时,index.php 调用 pages/a.php 等。index.php 包括functions.php,它在has_rights(...) 中执行所有正确的检查工作。

每个页面文件都是这样的:

if(has_rights(...)) {
    ...
}

每当我自己打开 $url/pages/a.php 时,我都会得到一个空白页面,并且日志中出现未定义 has_rights 的错误消息。在外部,这条消息是不可见的,并且没有明显的方法来获取页面中的文件名。此外,由于缺少页眉内容(CSS、Javascript、...),因此不应单独调用页面。这是一种危险吗?如果是这样,如何利用它?

每个页面文件是否应该包含用于权限检查的functions.php,并单独检查它是否被自己调用,或者只是编译失败并向浏览器发送一个空页面就足够了?

1个回答

依靠编译错误就足够了,但它会使您的网页更容易出错。例如,也许有时你会(不小心)启用 php 错误输出,然后你就会有信息泄露。您应该始终避免犯错。