关于敏感文件或备份 安全配置错误 禁止通过 URL 访问 Vue 项目打包后的 .gz 压缩文件

要禁止通过 URL 访问 Vue 项目打包后的 .gz 压缩文件(如 sc.6abb69d9.css.gz)或其他敏感文件,可以通过 Nginx 配置 和 Tomcat 配置双重防护来实现。以下是具体解决方案:


方法 1:通过 Nginx 配置禁止访问 .gz 文件

在 Nginx 的配置文件中(通常是 /etc/nginx/conf.d/your-site.conf 或 /etc/nginx/sites-available/default),添加以下规则:

nginx 复制代码
server {
    listen 80;
    server_name xxx.mrt.cn;

    location ~* \.gz$ {
        deny all;
        return 404;
    }

    # 其他配置(如反向代理到 Tomcat)
    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

作用:

  • location ~* \.gz$ 匹配所有 .gz 文件请求。
  • deny all; 拒绝所有访问,返回 403 Forbidden。
  • return 404; 可改为直接返回 404(更隐蔽)。

生效方式:

bash 复制代码
sudo nginx -t    # 检查语法
sudo systemctl reload nginx  # 重新加载配置

方法 2:Tomcat 禁止直接访问静态资源

如果 Nginx 只是反向代理,而 .gz 文件实际存放在 Tomcat 的 webapps/ROOT 目录下,可以通过 Tomcat 的 web.xml 限制访问:

  1. 编辑 conf/web.xml,在 <web-app> 标签内添加:
xml 复制代码
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Block gz files</web-resource-name>
        <url-pattern>*.gz</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>none</role-name> <!-- 拒绝所有角色访问 -->
    </auth-constraint>
</security-constraint>
  1. 重启 Tomcat:
bash 复制代码
sudo systemctl restart tomcat

方法 3:Vue 构建时不生成 .gz 文件(推荐)

如果不需要 HTTP 服务器自动提供 .gz 压缩文件,可以在 Vue 的构建配置中禁用 gzip 压缩:

  1. 修改 vue.config.js:
js 复制代码
module.exports = {
    chainWebpack: (config) => {
        config.plugins.delete('compression'); // 移除 gzip 压缩插件
    }
};
  1. 重新构建并部署:
bash 复制代码
npm run build

这样构建后的 dist 目录不会生成 .gz 文件,从根本上解决问题。


方法 4:服务器文件系统权限控制

直接限制 Linux 文件系统的访问权限:

bash 复制代码
# 进入 Tomcat 的静态资源目录
cd /path/to/tomcat/webapps/ROOT/static/css

# 移除 .gz 文件(谨慎操作!)
rm *.gz

# 或修改权限,禁止 Nginx/Tomcat 用户读取
chmod 600 *.gz  # 仅所有者可读,其他用户无权限

安全加固建议

  1. 隐藏服务器信息 :
    在 Nginx 中关闭 Server 头:

    nginx 复制代码
    server_tokens off;
  2. 禁用目录列表 :
    防止目录遍历攻击:

    nginx 复制代码
    location / {
        autoindex off;
    }
  3. 日志监控 :
    检查 Nginx 访问日志,排查异常请求:

    bash 复制代码
    tail -f /var/log/nginx/access.log | grep '\.gz'

最终方案推荐

  • 短期修复 :用 Nginx 的 deny 规则(方法 1)快速拦截请求。
  • 长期解决 :修改 Vue 构建配置 (方法 3),避免生成不必要的 .gz 文件。
  • 深度防护 :结合 Tomcat 安全约束 (方法 2)和 文件权限控制(方法 4)。

以上方法可有效防止敏感文件泄露,符合 A5 安全配置错误(敏感信息泄露)的修复要求。

相关推荐
yu_zhidun29 分钟前
终端资产管理平台实战配置:从空白环境到动态资产台账落地
安全·域智盾
拆房老料42 分钟前
ONLYOFFICE也能像Microsoft Word和WPS一样分别设置中西文字体
前端·html·word·开源软件·wps
VX_bysjlw9851 小时前
数码设备销售网站设计与实现39138-计算机毕设原创(免费领源码+带部署教程)
java·vue.js·spring boot·mysql·tomcat·mybatis·idea
Solis程序员1 小时前
Stripe 幂等表:把「不确定的重试」变成「查表返回」
前端·安全·bootstrap·php·agent
李纲明1 小时前
WordPress 站点变慢:按 TTFB → 缓存 → 查询 → 前端 分层排查(含配置注意)
前端·缓存·性能优化·wordpress·后端开发
程序人生8881 小时前
PDF 转 Word 版式错乱、表格丢失?DocConverter Web 格式互转引擎的保真实践
前端·人工智能·opencv·机器学习·pdf·word
陈然信息站2 小时前
皮尔磁纸板进料安全方案选型指南:O300传感器与myPNOZ、PNOZmulti 2对比
大数据·安全·业界资讯
粥里有勺糖2 小时前
安利一下最近用的桌面“Agent” | T3 Code
前端·github·ai编程
xy34532 小时前
Axure 9.0 动态面板基本操作
前端·ui·html·axure·原型·产品设计
不停喝水3 小时前
【前端转全栈java速通课】 项目实战④7-11节 操作数据库-登录-注册-修改密码-注销-mubatis-plus简化crud-
java·前端·数据库