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

求助:移除共享主机中</html>标签后出现的异常JavaScript代码

可行的恶意代码移除方案

方案1:Laravel全局中间件拦截清理(推荐)

利用Laravel的中间件机制,在响应发送到浏览器前截断</html>之后的所有内容,无需大规模部署,仅需修改两个文件:

  1. 在app/Http/Middleware目录下新建CleanMaliciousJs.php文件,写入以下代码:
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CleanMaliciousJs
{
    public function handle(Request $request, Closure $next)
    {
        $response = $next($request);
        
        // 仅处理HTML响应
        if ($response instanceof \Illuminate\Http\Response && str_contains($response->headers->get('Content-Type'), 'text/html')) {
            $content = $response->getContent();
            $htmlEndPos = strripos($content, '</html>');
            
            if ($htmlEndPos !== false) {
                // 保留到</html>标签为止
                $cleanContent = substr($content, 0, $htmlEndPos + 7);
                $response->setContent($cleanContent);
            }
        }
        
        return $response;
    }
}
  1. 打开app/Http/Kernel.php,在$middleware数组末尾添加中间件:
protected $middleware = [
    // ... 其他中间件
    \App\Http\Middleware\CleanMaliciousJs::class,
];

将这两个修改后的文件上传到共享主机对应目录覆盖即可,所有页面响应都会被自动清理。

方案2:Apache服务器通过.htaccess过滤

如果你的共享主机使用Apache,且开启了mod_substitute模块,可直接修改根目录的.htaccess文件,添加规则自动截断多余代码:

<IfModule mod_substitute.c>
    # 匹配</html>之后的所有内容,替换为仅保留</html>
    Substitute s|</html>.*$|</html>|ni
</IfModule>

若主机未开启mod_substitute,可联系主机商协助开启。

方案3:前端提前拦截(兜底方案)

如果上述后端方案无法实施,可在页面最顶部插入一段脚本,在恶意代码执行前清理DOM:

document.addEventListener('DOMContentLoaded', function() {
    const fullHtml = document.documentElement.outerHTML;
    const endPos = fullHtml.lastIndexOf('</html>');
    if (endPos !== -1) {
        document.documentElement.outerHTML = fullHtml.slice(0, endPos + 7);
    }
});

将这段代码放在页面<head>的最开头,确保它比恶意代码更早执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:57:19