安全
8 篇文章
- 给桌面客户端做下载加速:从「桶直接公开」到「边缘优先、源站兜底」的三代演进安装包下载最初是「桶直接公开、URL 写死在网页里」——能用,但任何人猜到路径就能镜像、刷流量。第二代把它改成桶私有 + 一次性令牌 + 三层限流,把链接变成「能力」。第三代接入 EdgeOne Pages 承载安装包字节,源站对象存储退成兜底:服务端兑换令牌时用一次 HEAD 探测决定跳边缘还是跳预签名链接,探测结果缓存 30 秒。这篇把三代的设计、代码、操作步骤与验证方法都写下来,包括一个差点让整个功能静默失效的路径前缀不一致。
- 给 Pangolin 叠两层 WAF:CrowdSec 查你是谁,雷池看你说什么上一篇我给 WAF 泼了冷水,这次还是装上了,而且是两层:CrowdSec 按 IP 信誉和行为封人,一处发现、7 台机器 5 秒内一起封;雷池用语义分析逐个检查请求内容。两者都以 Traefik 插件的形式挂在 Pangolin 入口上,不用另起反向代理,也不用交出证书。实测每个请求多 2.2ms。过程中踩了 8 个坑:插件启动时联网下载会让全站 404、雷池插件会把整个上传读进内存、CrowdSec 插件默认出错就全站拦截,还有一个差点让博客读者整批被挡在门外的 CDN 问题,以及一个能伪造任意来源 IP 的请求头。文末附完整配置。
- 服务器上线 100 秒,就有人来敲门:一次登录日志排查与 AI 时代的自保清单让 AI 帮我查 7 台服务器的登录日志,结果看到一台「节拍器」:每 40 秒一次、一周一万三千多次的低速爆破。顺着日志还翻出了写进日志的明文密码、被另一个 AI 会话悄悄删掉的 history,以及一扇自己打开却没注意的后门。AI 让攻击更便宜,也让我们自己的操作更难追溯;网站被篡改、被挂暗链还可能招来「喝茶」。文末附 SSH、fail2ban、暴露面、日志留存和 AI agent 使用规范的实操清单。
- 电商篇:安全——基于请求方法的访问控制绕过从「把 POST 改成 GET 就能提权」这个常见漏洞出发,解释授权层按 (路径, 方法) 匹配而执行层不看方法的病因,再拿电商项目的真实代码逐层核查:Connect 的 405、网关 Casbin 的默认拒绝、策略文件的通配陷阱、CSRF 豁免与 NO_SIDE_EFFECTS 的耦合。核查挖出一处真实缺口(审批 RPC 完全依赖网关),随后落地三道门禁:handler 内按动作授权、策略 act 列只认字面 POST、proto 标记进白名单,含回归测试与金丝雀验证。
- 把 admin=false 改成 true:拿自己的网关代码做一次攻防复盘从「改一个布尔值就能进后台」这个经典教学场景出发,先厘清所谓「截取请求」到底发生在哪一端,再逐层审计一套 Go 网关的真实代码——身份头剥离、不透明会话、RS256 验签、下游独立鉴权。四道防线都成立,却挖出两处可复现的真实漏洞:匿名购物访客 cookie 的横向越权,以及 OAuth 回调把「第 1 步校验过」当成保证而导致的会话 ID 外泄。含 PoC 输出、完整攻击链、已落地的修复与回归测试。
- 默认拒绝:别让前端流程替服务器做访问控制从「删除订单只检查 ID 是否存在」这个常见错误出发,整理一套可落地的服务端访问控制准则:默认拒绝、每个 HTTP 方法独立授权、资源归属检查、拒绝信任客户端参数、多步骤操作绑定、集中 IAM 与最小权限。
- 网络策略就是鉴权:用 Cilium CNP 守住「只有网关能连后端」这条线后端相信网关注入的身份头,那「谁能连到后端」就不是防火墙问题而是鉴权问题。从一次伪造身份的 curl 讲起:为什么需要 CiliumNetworkPolicy、怎么装、怎么分别应用在前端 / 网关 / 后端、以及开发阶段怎么开一个只属于 dev 的口子而不让它漏进生产——含 Hubble 抓到的丢包证据与一条 canary。
- 前端隐私资产保护有授权限制的模型、字体、图片放到网页上就等于提供下载。用一个 3D 模型的真实改造过程,说明能做到什么、做不到什么,以及三层门槛怎么搭。