互联网本来是安全的,自从有了研究安全的人之后,互联网就变得不安全了。
网络安全世界就像一枚硬币,一面是守护,一面是破坏。很多人对黑客的印象停留在电影里酷炫的敲代码画面,但很少有人了解Web安全几十年一路走来的演变,以及安全对抗背后最质朴的底层思想。今天我们就跟着书本的视角,穿越Web安全发展史,聊聊黑客、攻防博弈、安全的本质,打破"一键解决所有安全问题"的幻想。
Bilibili 同步视频
一、黑客江湖变迁:从系统爆破到Web战场⚔️
最早在计算机圈子里,Hacker 代表着吃透系统底层、热衷于挖掘技术细节的技术爱好者。但传到国内翻译为"黑客"之后,这个词带上了浓重的破坏色彩。黑客最大的目标,就是拿到系统最高权限,Linux下的root、Windows下的Administrator,就像猎物之于猎手,是无数攻击者梦寐以求的战利品。
能实现权限突破的漏洞利用代码被叫做Exploit。黑客圈子也分出两类人:
- 高阶研究者:吃透底层原理,自己挖掘漏洞、编写Exploit;
- 脚本小子(Script Kid):不钻研底层,只会直接复制使用别人写好的攻击代码。
现实中,真正造成大规模网络黑产破坏的,往往不是顶尖漏洞挖掘者,而是数量庞大的脚本小子。
1. 早期:瞄准操作系统与网络服务(2002年以前)
互联网早期,Web还不是主流。FTP、SMTP、SSH这类网络服务才是攻击的重灾区,黑客直接冲击系统软件,就有机会一步拿到root权限。书中提到TESO组织的SSH漏洞利用代码,甚至被搬进电影《黑客帝国2》,影片里攻击者借助Nmap扫描SSH服务,运行Exploit直接重置root账号密码,完成入侵。

图1:《黑客帝国2》中SSH漏洞攻击流程,这也是2002年前非常典型的系统层攻击链路
这个阶段,Web攻击并不吃香------Web漏洞大多只能拿到低权限,对比直接拿下整机系统,对黑客吸引力有限。
防火墙、ACL访问控制技术的崛起改写了格局。企业开始把数据库等核心服务藏在防火墙后方,只允许可信IP访问。2003年冲击波蠕虫事件更是一个转折点,针对Windows RPC 445端口的蠕虫横扫全球数百万主机。运营商直接在骨干网封禁135、445高危端口。
暴露在公网的系统服务越来越少,而Web应用飞速崛起,HTTP/80端口几乎永远对外开放。黑客的战场,顺势转移到了Web应用之上🌐。
补充:网络攻击还有另外一大分支------客户端攻击。黑客构造恶意网页、恶意文档,利用浏览器、Office、PDF阅读器等桌面软件漏洞,在用户电脑植入木马。这和Web安全有交集,但二者本质上属于不同领域。
2. Web安全崛起:Web1.0到Web2.0的攻防进化
Web的攻防演进,伴随互联网形态迭代,里程碑式漏洞轮番登场:
| 阶段 | 代表安全问题 | 攻击特点 |
|---|---|---|
| Web1.0 | 文件上传、Webshell、文件包含、SQL注入 | 攻击聚焦服务端,拿下服务器、窃取数据库数据 |
| Web2.0 | XSS跨站脚本、CSRF跨站请求伪造 | 攻击蔓延到浏览器客户端,劫持普通用户账号会话 |
表1 Web不同时代典型安全威胁对比
1999年前后登场的SQL注入是Web安全史上的重磅炸弹。攻击者通过构造特殊输入,篡改数据库查询语句,既能拖走全部敏感数据,运气好还可以进一步获取服务器权限,威力不输传统系统漏洞,自此Web攻击彻底火遍黑产圈子。
紧随其后的XSS跨站脚本,在2003年后得到广泛重视。MySpace的XSS蠕虫事件给整个行业敲响警钟,OWASP甚至将XSS放在2007 Top10安全威胁第一位。随着Web2.0社交网站普及,XSS、CSRF把战火从服务器烧到每一个普通用户的浏览器。
时至今日,Java生态各类复杂开源组件、HTML5、云计算、移动互联网持续推高Web应用复杂度,安全对抗也随之不断升级。
二、白帽子VS黑帽子:攻防双方天生不对等🤼♂️
用帽子颜色区分安全从业者,是安全圈很形象的比喻:
- 🤍白帽子:掌握攻击技术,目标是防御、修补漏洞,守护系统安全;
- 🖤黑帽子:滥用攻击技术,以入侵、窃取数据、牟利为目的,实施网络犯罪。
同样掌握安全技术,两者的思考逻辑完全不一样:
✅黑帽子:找一个突破口就够了。只要找到系统任意一处漏洞,组合利用就可以完成入侵,只需要关注局部能够达成入侵的点。
✅白帽子:所有漏洞都要处理干净。只要有一处遗漏,防线就会被击穿,必须全盘审视整个系统。
黑帽子擅长组合漏洞 ,把多个弱点串联达成入侵;白帽子则要拆解问题,把复杂安全风险拆分成独立单元逐个根治。
正所谓:破坏永远比建设容易。但白帽子并不是只能被动挨打。优秀的防御方案,防御的是一类攻击,而不是某一次特定入侵。举个例子,如果架构层面彻底解决SQL注入产生的根源,那么无论黑客构造怎样变形的注入语句,都无法再利用这类漏洞,在这一类威胁上实现主动权。
但理想很丰满,现实骨感。安全圈有一句玩笑 No Patch for Stupid,人,往往是最大的漏洞。再完美的代码,如果管理员弱口令、运维人员误关闭安全配置,安全防线瞬间失效。
攻防是永不停歇的军备竞赛:防御刚堵上一批漏洞,攻击方又会研究出新的手法。如果新技术在设计之初没有植入安全思维,防御手段永远会追赶攻击的脚步。
三、看透安全本质:安全,本质是信任问题🔐
抛开五花八门的漏洞、攻防工具,安全的内核到底是什么?我们可以拿机场安检来类比:
机场划分出不同的信任区域,候机厅属于高信任域,外部属于低信任域。
- 高信任域流向低信任域:候机厅出来,不需要安检;
- 低信任域流向高信任域:再次进入候机厅,必须重新过安检。
安全问题,大多发生在低信任域的数据越过信任边界,流入高信任域,却没有经过严格校验过滤。
核心观点:安全的本质,是信任问题。
任何一套安全方案,都建立在预设的信任前提之上。想象把机密文件锁进抽屉:我们默认信任锁匠没有私配钥匙、抽屉不存在后门、钥匙妥善保管。如果完全不信任一切,那么世上不存在任何安全方案。
同时安全也是一门概率与成本平衡的艺术。不存在绝对100%安全,设计安全防护需要权衡资产价值、防护成本、威胁发生概率。机房我们会考虑地震风险,但不会去考虑彗星撞击地球这种极小概率事件。
哪怕是现在大火的零信任架构 ,很多人误解为"什么都不信任"。实际上零信任不是完全抛弃信任,而是不再信任网络位置,把信任粒度收缩到身份、授权、设备状态。它只是改变信任的条件,并没有消灭信任。
可信计算也是同样道理:整套防护根基建立在硬件"可信根"之上,如果可信根被攻破,上层全部安全防护全部失效。所有安全大厦,都需要一个可信的基石。
四、破除幻想:安全领域没有银弹💣
软件工程有著名概念"没有银弹",这句话在安全领域同样适用。
不存在某个产品、某套工具,买完就可以一劳永逸高枕无忧。
攻击技术在迭代,防御技术也必须持续演进。Vista系统当年被微软称作史上最安全Windows系统,削减大量高危漏洞,但依旧在Pwn2Own黑客竞赛中被0day漏洞攻破。安全产品也需要持续更新规则、持续运营,静态不变的防护策略迟早会被新攻击绕过。
安全对抗是动态持续过程,安全需要融入软件完整生命周期,持续做安全检测、跟进新型攻击手段,而不是做一次性修复。
五、安全三要素CIA,衡量安全的标尺📊
评估一套系统安不安全,可以看安全三要素CIA:机密性Confidentiality、完整性Integrity、可用性Availability。

图2 安全三要素思维导图,是分析所有安全风险的基础框架
- 机密性:保障数据不会泄露。就像重要文件不能放在透明盒子,加密是最经典的实现方式;
- 完整性:保障数据没有被篡改。流传的康熙遗诏改字的故事,就是典型破坏完整性的案例,数字签名可以有效抵御篡改;
- 可用性:保障服务资源随需可得。好比停车场车位被恶意石块占满,拒绝服务攻击就是破坏系统可用性。
任何一次安全事件,几乎都会破坏三要素中的一项或者多项。
写在最后
Web安全不是一堆零散漏洞的堆砌,背后是信任边界、成本权衡、持续对抗的底层思想。懂原理,才能看透层出不穷的新型攻击。攻防技术会不断翻新,但底层逻辑万变不离其宗。

安全不是一锤子买卖,而是一场长跑。