Magento网站恢复备份后仍显示jsecoin支持提示的原因排查
这种情况真的很头疼——明明把整个网站删了恢复备份,那个烦人的“this site is supported by jsecoin”提示还顽固存在,说明恶意代码的藏身之处肯定超出了你备份覆盖的范围,或者有残留的触发机制没清理干净。结合Magento的常见感染场景,我整理了几个最可能的原因,你可以挨个排查:
服务器全局配置被篡改
很多这类恶意脚本会钻服务器配置的空子,比如藏在Apache的全局.htaccess文件(不止网站根目录,子目录里的隐藏.htaccess也要查)、Nginx的站点配置,甚至是PHP的php.ini里的auto_prepend_file/auto_append_file配置项——这些设置会让恶意代码在所有PHP脚本执行前自动加载,就算你替换了网站文件,只要服务器配置没改,提示还是会冒出来。
你可以先执行php -i | grep auto_prepend_file看看有没有可疑的路径,再逐行检查所有.htaccess里有没有陌生的Rewrite规则或者额外添加的代码。数据库残留恶意注入
Magento的很多前端内容都是从数据库读出来的,比如CMS页面、静态块、主题设置,甚至是核心配置表core_config_data。如果你的备份数据库本身已经被感染,或者恢复时没彻底覆盖干净,恶意代码可能就藏在这些地方。
你可以用数据库工具执行搜索查询,比如:SELECT * FROM cms_page WHERE content LIKE '%jsecoin%'; SELECT * FROM cms_block WHERE content LIKE '%jsecoin%'; SELECT * FROM core_config_data WHERE value LIKE '%jsecoin%';看看有没有被篡改的记录,找到后直接清理掉。
缓存/CDN未彻底刷新
就算你替换了网站文件和数据库,如果服务器的缓存(比如Magento自带的缓存、Redis缓存)或者CDN节点还存着旧的恶意页面缓存,用户访问时还是会看到那个提示。
先在Magento后台的系统->缓存管理里清理所有缓存,也可以手动删除网站根目录下var/cache、var/page_cache目录的所有文件;如果用了CDN,记得登录CDN控制台刷新全站缓存,强制节点拉取新的内容。主题/第三方扩展藏有后门
恶意代码经常会伪装成主题文件(比如header.phtml、footer.phtml这类公共模板)或者第三方扩展的代码,如果你的备份里包含了被感染的主题或扩展,恢复后自然还会出问题。
可以临时切换到Magento默认的Luma主题,看看提示是否消失——如果消失了,就说明问题出在自定义主题里;再逐一禁用第三方扩展,排查是哪个扩展带了恶意代码。服务器文件系统存在隐藏恶意文件
恶意脚本可能会生成一些隐藏文件(文件名以.开头)或者伪装成系统文件的脚本,比如在var、pub目录下的陌生PHP文件,甚至替换了系统自带的核心文件(比如index.php的副本)。
你可以用服务器命令行搜索整个网站目录下包含jsecoin的文件:grep -r "jsecoin" /path/to/your/magento/root找出所有可疑文件后直接删除,同时检查核心文件的完整性(比如和官方Magento包的文件对比)。
内容的提问来源于stack exchange,提问作者Vikky

