Mac系统部署Next.js后台管理系统项目后,网络安全自查及隐患排除

简易版:

1、修改next.js项目下的package.json文件(3000端口)

把里面的"start": "next start",

改为:

 "start": "next start --hostname 127.0.0.1"

2、编辑mysql配置文件my.cnf,在文件中增加下面的代码:

[mysqld]

bind-address=127.0.0.1

mysqlx=0


再运行命令:

brew services restart mysql 



3、开启Mac系统网络中的系统防火墙

 sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate


返回信息包括:Firewall is enabled. (State = 1)即表明防火墙开启成功!

4、关闭SSH远程登录访问(22端口)

运行下面的命令:

sudo systemsetup -getremotelogin   


返回信息 Remote Login :Off 则表明Mac不支持被人用SSH远程登录

5、查看mysql是否对外开放(3306端口)

 netstat -an | grep 3306 


如果返回:

tcp4       0      0  127.0.0.1.3306         *.*                    LISTEN

则表明3306端口仅支持本地操作(是安全的)。


6、检查Next.js版本漏洞

运行命令:

npm audit
或

npm audit --registry=https://registry.npmjs.org


首选运行无损伤的修复:
npm audit fix

npm audit fix --registry=https://registry.npmjs.org


修复完毕后再进行更大版本的漏洞修复:
npm audit fix --force
或

npm audit fix --force --registry=https://registry.npmjs.org


=====================================================================

🧭 一、网络与端口层(最重要)

🔍 怎么检查

1. 查看所有监听端口

lsof -i -P | grep LISTEN

重点看:

  • 有没有 0.0.0.0:xxxx
  • 有没有 *:xxxx

2. 检查 Next.js 是否暴露公网

理想状态:

127.0.0.1:3000 ✔

危险状态:

*:3000 ❌
0.0.0.0:3000 ❌

⚠️ 风险

  • 局域网可直接访问后台
  • 内网扫描暴露接口
  • 绕过 Cloudflare 直接访问服务

🔧 修复方法

Next.js 绑定本机:

"start": "next start --hostname 127.0.0.1"

或:

next start --hostname 127.0.0.1

🧭 二、数据库安全层(MySQL)

🔍 怎么检查

SELECT user,host FROM mysql.user;

查看:

  • 是否有 %
  • 是否有远程 root
  • 是否有匿名用户

⚠️ 风险

配置风险
root@%高危
user@%可远程入侵
bind 0.0.0.0可公网扫描

🔧 修复方法

1. 限制监听

bind-address = 127.0.0.1

2. 删除远程用户

DROP USER 'root'@'%';
FLUSH PRIVILEGES;

3. 最小权限原则

GRANT SELECT, INSERT ON db.* TO 'app'@'localhost';

🧭 三、系统防火墙层(macOS)

🔍 检查

macOS System Settings
→ 网络 → 防火墙


⚠️ 风险

  • 防火墙关闭
  • 未开启隐身模式
  • 未限制入站连接

🔧 修复

建议配置:

✔ 防火墙开启
✔ stealth mode 开启
✔ 自动允许已签名应用


🧭 四、Cloudflare Tunnel 层

🔍 检查

cloudflared tunnel list

检查:

  • token 是否泄露
  • tunnel 是否被多人使用
  • ingress 是否正确

⚠️ 风险

  • token 泄露(最严重)
  • tunnel 被接管
  • 配置错误暴露端口

🔧 修复

去:

Cloudflare Zero Trust Dashboard

操作:

  • 删除旧 tunnel
  • 重新生成 token
  • 更新本地配置

🧭 五、Next.js 应用层安全

🔍 检查点

1. 是否把 config 写进前端

grep -R "process.env" .

重点看:

  • 有没有 NEXT_PUBLIC_
  • 有没有数据库配置暴露

2. API 是否有鉴权

检查:

  • 是否所有 API 都需要登录
  • 是否存在未授权接口

3. 是否有登录保护

典型风险:

/admin 无限制访问 ❌

🔧 修复方法

1. API 鉴权中间件

if (!session) return unauthorized

2. rate limit(防爆破)

limit: 5 requests / min

3. 禁止敏感信息进入 client

  • 只用 server component 访问 DB
  • 不在 use client 中写后端逻辑

🧭 六、依赖安全(npm)

🔍 检查

npm audit
npm outdated

⚠️ 风险

  • RCE 漏洞(最严重)
  • 上传文件攻击(xlsx)
  • JSON 解析漏洞

🔧 修复

1. 更新安全依赖

npm update

2. 不要无脑:

npm audit fix --force ❌

3. 上传类库要限制:

  • 文件大小
  • MIME类型
  • server-side解析

🧭 七、系统权限与文件安全

🔍 检查

ls -la .env*
ls -la config

⚠️ 风险

  • .env 被读取
  • config 外泄
  • git 提交敏感信息

🔧 修复

1. 权限控制

chmod 600 .env*
chmod -R go-rwx config

2. git 忽略

.env*
config/private*

🧭 八、运行时进程安全

🔍 检查

ps aux | grep node
ps aux | grep mysql

⚠️ 风险

  • root 运行 Node
  • 后门进程
  • 非授权服务

🔧 修复

  • 使用普通用户运行
  • 使用 pm2 管理

🧭 九、备份与灾难恢复(很多人忽略)

🔧 建议

每天:

mysqldump > backup.sql

上传到:

Cloudflare R2


📊 最终安全评分体系(你可以自测)

模块满分
网络端口隔离25
数据库安全20
应用安全20
系统防火墙10
依赖安全10
备份恢复15

🧠 一句话总结(核心思想)

Next.js 系统安全不是“防黑客”,而是三件事:

  1. 只允许必要端口暴露
  2. 所有敏感服务只在 localhost
  3. 外部入口只有 Cloudflare

评论

此博客中的热门博文

通过命令行在Github上发布项目的新版本

利用GitHub免费的静态页面托管空间发布网页

本地部署OpenAvatarChat实时交互数字人系统