核心答案:上线四件事——①端口:仅开放 80/443,3306/6379/27017 等数据端口严禁绑 0.0.0.0;②许可证:内部项目随意,要分发就看 MIT(最省心)与 GPL(衍生必须开源)的分界;③标识:UUID v4 有 122 位随机熵,日生成 10 亿个撞一个的概率约 10⁻¹⁸;④下载估算:文件 MB ÷ (带宽 Mbps ÷ 8) = 理论秒数,实际乘 1.1-1.3 协议开销。

端口安全检查

三条红线:

  1. 数据库端口不公网:MySQL 3306、Redis 6379、MongoDB 27017 绑 127.0.0.1 或内网 IP,安全组只对办公网放行
  2. 管理端口改默认或加白名单:SSH 22 被全网扫描是常态,密钥登录+fail2ban 是底线
  3. 调试端口上线必关:Node 9229、Java JDWP 8787、phpMyAdmin 常见路径——被扫到就是后门

高频端口速查表

端口服务上线姿态
22SSH密钥登录+限源 IP
80/443HTTP/HTTPS公网开放
3306MySQL仅内网
5432PostgreSQL仅内网
6379Redis仅内网+密码
8080应用调试上线关闭
9000PHP-FPM 等仅本机
27017MongoDB仅内网

完整 40 端口清单用[常用端口查询](/c/dev/port-list),附排查命令口诀。

开源许可证怎么选

许可证商用修改后闭源传染性一句话
MIT最省心,保留署名即可
Apache 2.0MIT+专利授权
BSD同 MIT 族
LGPL✓(动态链接)改库本身要开源
GPL衍生作品整体 GPL
AGPL最强网络提供服务也算分发

决策树:想最大化被采用 → MIT;要专利保护 → Apache 2.0;要强制回馈社区 → GPL;SaaS 场景防白嫖 → AGPL。纠结时用[开源许可证选择器](/c/dev/license-picker)回答三个问题自动推荐。

UUID 版本对比

版本生成方式特点
v1时间戳+MAC有序但泄露 MAC,少用
v4纯随机最常用,122 位熵
v7时间戳+随机有序且安全,新系统推荐

v4 碰撞概率:按生日悖论,累积生成 2.71×10¹⁸ 个才有 50% 概率撞一个——日生成 10 亿个也要 740 万年。直接放心用。

实例:安全组配置排错

现象:外网访问 http://1.2.3.4:8080 超时。

  1. 服务器本地 curl localhost:8080 → 通 → 应用没问题
  2. ss -lptn → 应用绑在 127.0.0.1:8080只监听本机,外网当然不通
  3. 改绑 0.0.0.0 或内网 IP → 仍不通
  4. 查云安全组 → 8080 未放行 → 添加入站规则 → 通

口诀:本地通→看监听地址;监听对→看安全组;安全组对→看防火墙(iptables/ufw)。

实例:下载时长估算

场景:500MB 安装包,用户 200Mbps 带宽。

  1. 换算:200Mbps ÷ 8 = 25 MB/s 理论速度
  2. 理论时长:500 ÷ 25 = 20 秒
  3. 实际修正:TCP 开销+晚高峰 ≈ ×1.2 → 约 24 秒

用[下载时间计算器](/c/dev/download-time)直接输入文件大小与带宽档位,自动含协议开销修正。

常见误区

  • 「先开放 0.0.0.0 调试,回头再收」:扫描器 5 分钟内就能发现新暴露端口,弱口令 Redis 被写入 SSH 公钥的案例每周都在发生。
  • 「用了 GPL 库改成 SaaS 就没事」:GPL 管不到网络服务,但 AGPL 就是为此而生——选依赖时看清是哪种。
  • UUID 当安全凭证:UUID 是标识符不是密钥——v4 虽随机但出现在 URL/日志里就会泄露,鉴权请用专门的 token 方案。
  • Mbps 当 MB/s:运营商标称带宽是比特(Mb),下载显示是字节(MB)——1 字节=8 比特,1000M 宽带理论峰值 125MB/s,别投诉错对象。