刚开始学安全的时候,我觉得它只是一门附加技能。会写代码就够了,安全是锦上添花的东西。一个月下来,这个想法被彻底颠覆了。
以前写一个搜索功能,逻辑很简单:接收用户输入 → 拼 SQL → 返回结果。写完跑通,功能 OK,commit,完事。
现在我会多想几步:用户输入里有没有 SQL 关键字?URL 参数有没有被 urlencode?返回给前端的数据有没有 innerHTML 的危险操作?这个 API 是不是可以被未授权调用?日志里会不会泄露敏感信息?
这种思维转变不是一蹴而就的,而是在一次次”原来这样也会出问题”的震惊中完成的。昨天看了一个 Nginx 配置不当导致目录穿越的案例,赶紧去检查了一下自己的服务器。还好,alias 用的是绝对路径。
慢慢地,我开始理解为什么安全圈总说”安全是一种意识,不是一套工具”。XSS 过滤器能拦一部分,WAF 能挡一部分,但真正可靠的防线,是写代码时每一行的谨慎。
不过话说回来,过度防御也是病。昨天写一个表单,我给每个字段加了六层校验,写完自己都笑了——这玩意儿真的需要防到这个程度吗?大概这就是初学者的通病吧,从毫无戒心到草木皆兵,需要一个平衡点。
最近也开始在 GitHub 上找一些开源项目的 issue,看看有没有已披露的安全漏洞可以学习。有几条真的很有意思——一个看似无害的 Markdown 渲染器配置不当,就能导致任意文件读取。阅读这些真实案例,比看十篇教程都有用。
下个月的计划是:系统学完 OWASP Top 10,再搭个虚拟机环境做一次完整的渗透测试实战。希望能在春节前把笔记整理出来。
