dedeCMS网站后台登录login.php,发现网站搭建了快3年,现在登录php文件login.php会被自动删除,找了半天代码也没发现问题,login.php一放进去3秒就会被删,求大神指导如何破? 就会, 大神
能帮忙看下是哪个代码吗?我设置成2024年就不会被杀,2025年就不行。 您的管理目录的名称中包含默认名称dede,建议在FTP里把它修改为其它名称,那样会更安全!'; } else { $redmsg = ''; } //登录检测 $admindirs = explode('/',str_replace("\\",'/',dirname(__FILE__))); $admindir = $admindirs[count($admindirs)-1]; if($dopost=='login') { //只允许用户名和密码用0-9,a-z,A-Z,'@','_','.','-'这些字符 $userid = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $userid); $pwd = preg_replace("/[^0-9a-zA-Z_@!\.-]/", '', $pwd); $cfg_fail_limit = isset($cfg_fail_limit) ? $cfg_fail_limit : 5; $cfg_lock_time = isset($cfg_lock_time) ? $cfg_lock_time : 3600; // 连续登录失败用户锁定 $fail_limit = $cfg_fail_limit; $lock_time = $cfg_lock_time; $arr_login = array(); $filename = DEDEDATA.'/login.data.php'; if (file_exists($filename)) { require_once(DEDEDATA . '/login.data.php'); $arr_login = json_decode($str_login, true); if ($arr_login[$userid] != '') { $count = explode(',', $arr_login[$userid])[0]; $timestamp = explode(',', $arr_login[$userid])[1]; if ($count == $fail_limit && $timestamp + $lock_time > time()) { $date = date('Y-m-d H:i:s', $timestamp + $lock_time); ResetVdValue(); ShowMsg("连续登录失败用户锁定!解锁时间:{$date}", 'login.php', 0, 5000); exit; } } } $validate = empty($validate) ? '' : strtolower(trim($validate)); $svali = strtolower(GetCkVdValue()); if(($validate=='' || $validate != $svali) && preg_match("/6/",$safe_gdopen)){ ResetVdValue(); ShowMsg('验证码不正确!','login.php',0,1000); exit; } else { $cuserLogin = new userLogin($admindir); if(!empty($userid) && !empty($pwd)) { $res = $cuserLogin->checkUser($userid,$pwd); //success if($res==1) { // 连续登录失败用户锁定 $count = 0; $timestamp = time(); $arr_login[$userid] = "{$count},{$timestamp}"; $content = "keepUser(); if(!empty($gotopage)) { if (preg_match("#^(http|https):\/\/#i", $gotopage) && !preg_match("#^{$cfg_basehost}#", $gotopage)) { ShowMsg('非本站资源无法访问', 'javascript:;'); exit(); } ShowMsg('成功登录,正在转向管理管理主页!',dede_htmlspecialchars($gotopage)); exit(); } else { ShowMsg('成功登录,正在转向管理管理主页!',"index.php"); exit(); } } //error else if($res==-1) { ResetVdValue(); ShowMsg('用户名或者密码错误!','login.php',0,1000); exit; } else { // 连续登录失败用户锁定 $count = 1; $timestamp = time(); if ($arr_login[$userid] != '') { $count = explode(',', $arr_login[$userid])[0] + 1; if ($count > $fail_limit) { $count = 1; } } $arr_login[$userid] = "{$count},{$timestamp}"; $content = " cyjahfy 发表于 2025-10-14 16:02 可以查查会不会是login.php文件被添加了恶意代码,所以被电脑安全软件给清除了 我就不能放在网站的目录下,放在任何一个文件夹里,就自动删除,我设置成2024年,就不会被删,一设置成2025年,就会被删。很奇怪。
spldj145 发表于 2025-10-14 16:27 我就不能放在网站的目录下,放在任何一个文件夹里,就自动删除,我设置成2024年,就不会被删,一设置成20 ... 试试更改成其它文件名,如login1234.php会不会被删除。也会被删的话再复制一个其它现有的.php文件再改成其它文件名看看会不会也被删除,如果不被删除的话再试试把login.php的代码粘贴进去,如果也删除的话,可能要跟踪一下代码查找原因了。
看了下没有看到删除文件的代码,问了下ds, 建议检查以下文件: 1. /../include/common.inc.php 2. DEDEINC.'/userlogin.class.php 3. DEDEDATA.'/admin/config_update.php 这些文件中可能包含与系统时间校验相关的逻辑
spldj145 发表于 2025-10-14 16:39 一样,会删。 都会被删的话,可能是代码上哪里有校验逻辑,也可能是服务器上有定时任务啥的,具体得排查。如果web服务可以关闭的话,可以关闭web服务,再上传试试。。。总之要先排查一下是代码原因,还是服务原因,或者其它原因。如果关闭服务后,上传没问题,可能是代码原因,如果你对PHP熟悉的话,可以自行找找核心代码里有没有相关逻辑,找不到的话,只能打包完整程序或者远程看看了。