0

好的,所以我一直在寻找整个网络,我似乎无法找到任何解决我的问题的方法。如果过去有人问过这个问题,我深表歉意。

我确信对此有一个非常简单的答案:不久前,我为客户建立了一个网站。这个网站有一个管理系统,其中一些页面使用名为“级别”的 $_SESSION 变量锁定,该变量基本上检查用户是否是管理员。此外,一些页面被通常的登录会话变量锁定,以确保只有登录的人才能访问这些页面。

现在的问题是,在我的两个页面上,php 脚本似乎完全由自己运行。第一页只是将所有激活电子邮件重新发送给数据库中每个用户的页面。此页面只能通过登录并以管理员身份访问。第二页只能通过 PayPal 访问。PayPal 脚本具有后备支持,可检查是否存在 PayPal 发布变量。

任何人都知道为什么这些脚本自己运行?当不断向客户或管理员发送随机电子邮件时,它会变得很麻烦。我可能在某个地方做错了什么。我认为可能只是 Google 爬虫激活了脚本,但爬虫不是必须登录才能访问脚本吗?

4

3 回答 3

0

这可能是很多事情。

一种方法可能是搜索引擎正在执行您的脚本。

几年前,我受雇调查可能导致删除使用他们自制 CMS 制作的所有页面的原因。

查看他们的访问日志显示,两个搜索引擎正试图在管理前端中对内容进行索引。包括所有删除页面链接。

发生这种情况的原因是两件事的结合。

第一个是来自两个搜索引擎的管理员浏览器插件。文档证明客户访问的页面是从他们的插件发送到搜索引擎的。

其次,当搜索引擎试图索引一个受会话保护的页面时,他们的 CMS 的原始开发人员忘记exit;在该header('Location: ...');部分之后放置一个,这意味着页面上的其余代码仍然被执行。

解决方案

我通过添加exit;代码解决了这个问题:

If( ! isset($_SESSION['level']) )
{
  header('Location: login.php');
  exit; // stops further execution of code
}

我希望这会有所帮助。

于 2012-08-07T06:35:00.497 回答
0

检查您的服务器的访问日志,看看何时以及什么在调用这些页面(如果它们被调用)。

如果某些东西正在访问那些不应该访问的页面(蜘蛛、人等),那么您就有了安全问题。

我非常怀疑这些脚本是在“自称”

于 2012-08-07T05:43:08.613 回答
0

要找出调用它们的原因,请在检查会话变量是否已设置后发现未设置,添加

file_put_contents('./log/log.txt', print_r($_SERVER));

为自己创建一个目录“log”和一个 writabel 文件“log.txt”,源代码应该出现在其中。

另一个有用的函数是 debug_backtrace()。使用它有点棘手,但是:

if ($handle = @fopen('./log/log.txt', 'a')) {
    for ($i=1; $i<count($aBack); $i++) {
        if (isset($aBack[$i]['file'])) {
            fwrite($handle, $aBack[$i]['file'] . '/' . $aBack[$i]['line'] . "\n\r";
        } else {
            fwrite($handle, 'Anonymous function' . "\n\r";
        }
    }
    fclose($handle);
}

应该给你一个使用什么誓言的日志。(代码逐字输入 - 抱歉有错别字,但你应该可以从那里开始工作)

请注意,大多数客户端信息(IP、referer 等)都是可伪造的,但调用 URI 不是。它会给你很多关于什么叫他们的信息。

于 2012-08-07T05:56:51.983 回答