好吧所以我一直在寻找网络,我似乎无法找到解决问题的方法。如果过去曾经问过这个问题我很抱歉。
我确信这有一个非常简单的答案:前段时间我为客户建立了一个网站。该网站有一个管理系统,其中一些页面使用名为“level”的$ _SESSION变量锁定,该变量基本上检查用户是否是管理员。此外,一些页面使用通常的登录会话变量锁定,以确保只有登录的人才能访问这些页面。
现在的问题是,在我的两个页面上,php脚本似乎完全由它们自己运行。第一页只是一个页面,它将所有激活电子邮件重新发送给数据库中的每个用户。只有登录并成为管理员才能访问此页面。第二页只能通过PayPal访问。 PayPal脚本具有后备支持,可检查是否存在PayPal后置变量。
任何人都知道为什么这些脚本自己运行?当随机电子邮件不断发送给客户或管理员时,这很麻烦。我可能在某处做错了什么。我认为可能只是Google抓取工具激活脚本,但抓取工具是否不必登录才能访问脚本?
答案 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
}
我希望这可以提供帮助。