自行激活的php脚本

自行激活的php脚本,php,session,Php,Session,好吧,我在网上到处找,似乎找不到解决问题的办法。如果过去有人问过这件事,我深表歉意 我相信有一个非常简单的答案:不久前我为一个客户建立了一个网站。该网站有一个管理系统,其中一些页面使用名为“level”的$\u会话变量锁定,该变量基本上检查用户是否为管理员。此外,一些页面被常用的登录会话变量锁定,以确保只有登录的用户才能访问这些页面 现在的问题是,在我的两个页面上,php脚本似乎完全独立运行。第一个页面只是将所有激活电子邮件重新发送给数据库中的每个用户的页面。只有登录并成为管理员才能访问此页面。

好吧,我在网上到处找,似乎找不到解决问题的办法。如果过去有人问过这件事,我深表歉意

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

现在的问题是,在我的两个页面上,php脚本似乎完全独立运行。第一个页面只是将所有激活电子邮件重新发送给数据库中的每个用户的页面。只有登录并成为管理员才能访问此页面。第二页只能通过PayPal访问。PayPal脚本具有回退支持,用于检查是否存在PayPal post变量


有人知道为什么这些脚本是自己运行的吗?当不停地向客户或管理员发送随机电子邮件时,它会变得很麻烦。我可能在什么地方做错了什么。我想可能是谷歌爬虫激活了这些脚本,但爬虫不一定要登录才能访问脚本吗?

检查服务器的访问日志,看看什么时候调用这些页面(如果调用了这些页面)

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


我非常怀疑脚本是否在“调用它们自己”

以找到调用它们的原因,在您检查会话变量是否已设置,并且您发现它未设置后,添加

file_put_contents('./log/log.txt', print_r($_SERVER));
自己创建一个目录“log”和一个写标签文件“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);
}
if($handle=@fopen('./log/log.txt','a')){

对于($i=1;$i来说,可能有很多事情

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

几年前,我被雇来调查是什么原因导致删除了他们自制CMS的所有页面

通过查看他们的访问日志,发现有两个搜索引擎试图为管理前端的内容编制索引。包括所有的删除页面链接

这可能发生的原因是两件事的结合

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

其次,当搜索引擎试图为会话保护页面编制索引时,其CMS的原始开发人员忘记在
标题('Location:…');
部分之后放置一个
出口;
,这意味着页面上的其余代码仍然被执行

解决方案

我通过在代码中添加
exit;
修复了该问题:

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

我希望这能有所帮助。

您是否能够访问web服务器日志文件,并查看谁(如果有人)正在调用这些脚本页?可能是看到一些代码会很好,否则很难看到某个地方是否有错误……您可以验证是否设置了任何cronjob,并可以将一些代码粘贴到此处以供使用e如果还有其他编程问题的话。你会惊讶谷歌能做什么:啊!我错过了退出机会,你是对的。这是否能解决问题,我不太确定,还需要拭目以待。谢谢你,伙计!我也没有看到脚本调用自己,这会很奇怪。虽然日志看起来很干净。我尝试了Repox的解决方案,我现在要做的就是等待,看看这是否真的解决了问题,但这似乎是相当可能的。