php脚本自行激活

时间:2012-08-07 05:38:14

标签: php session

好吧所以我一直在寻找网络,我似乎无法找到解决问题的方法。如果过去曾经问过这个问题我很抱歉。

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

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

任何人都知道为什么这些脚本自己运行?当随机电子邮件不断发送给客户或管理员时,这很麻烦。我可能在某处做错了什么。我认为可能只是Google抓取工具激活脚本,但抓取工具是否不必登录才能访问脚本?

3 个答案:

答案 0 :(得分:0)

检查服务器的访问日志,查看调用这些页面的时间和内容(如果正在调用它们)。

如果某些内容正在访问那些不应该访问的页面(蜘蛛,人等),则会出现安全问题。

我非常怀疑剧本是'自称'

答案 1 :(得分: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却不是。它会给你很多关于什么叫它们的信息。

答案 2 :(得分:0)

可能有很多事情。

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

几年前,我被聘请调查可能导致删除所有用自制CMS制作的页面的内容。

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

出现这种情况的原因是两件事的结合。

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

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

解决方案

我通过在代码中添加exit;来解决问题:

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

我希望这可以提供帮助。