白帽子讲Web安全 01:拨开迷雾,看懂Web安全的底层逻辑
- Bilibili 同步视频
- 一、黑客江湖变迁:从系统爆破到Web战场⚔️
-
- 1. 早期:瞄准操作系统与网络服务(2002年以前)
- 2. Web安全崛起:Web1.0到Web2.0的攻防进化
- 二、白帽子VS黑帽子:攻防双方天生不对等🤼♂️
- 三、看透安全本质:安全,本质是信任问题🔐
- 四、破除幻想:安全领域没有银弹💣
- 五、安全三要素CIA,衡量安全的标尺📊
- 写在最后
互联网本来是安全的,自从有了研究安全的人之后,互联网就变得不安全了。
网络安全世界就像一枚硬币,一面是守护,一面是破坏。很多人对黑客的印象停留在电影里酷炫的敲代码画面,但很少有人了解Web安全几十年一路走来的演变,以及安全对抗背后最质朴的底层思想。今天我们就跟着书本的视角,穿越Web安全发展史,聊聊黑客、攻防博弈、安全的本质,打破"一键解决所有安全问题"的幻想。
Bilibili 同步视频
白帽子讲Web安全 01:拨开迷雾,看懂Web安全的底层逻辑
一、黑客江湖变迁:从系统爆破到Web战场⚔️
最早在计算机圈子里,Hacker代表着吃透系统底层、热衷于挖掘技术细节的技术爱好者。但传到国内翻译为"黑客"之后,这个词带上了浓重的破坏色彩。黑客最大的目标,就是拿到系统最高权限,Linux下的root、Windows下的Administrator,就像猎物之于猎手,是无数攻击者梦寐以求的战利品。
能实现权限突破的漏洞利用代码被叫做Exploit。黑客圈子也分出两类人:
- 高阶研究者:吃透底层原理,自己挖掘漏洞、编写Exploit;
- 脚本小子(Script Kid):不钻研底层,只会直接复制使用别人写好的攻击代码。
现实中,真正造成大规模网络黑产破坏的,往往不是顶尖漏洞挖掘者,而是数量庞大的脚本小子。
1. 早期:瞄准操作系统与网络服务(2002年以前)
互联网早期,Web还不是主流。FTP、SMTP、SSH这类网络服务才是攻击的重灾区,黑客直接冲击系统软件,就有机会一步拿到root权限。书中提到TESO组织的SSH漏洞利用代码,甚至被搬进电影《黑客帝国2》,影片里攻击者借助Nmap扫描SSH服务,运行Exploit直接重置root账号密码,完成入侵。
#mermaid-svg-u3vSq7Fnv7gBAoAJ{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .error-icon{fill:#552222;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .marker.cross{stroke:#333333;}#mermaid-svg-u3vSq7Fnv7gBAoAJ svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-u3vSq7Fnv7gBAoAJ p{margin:0;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .cluster-label text{fill:#333;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .cluster-label span{color:#333;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .cluster-label span p{background-color:transparent;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .label text,#mermaid-svg-u3vSq7Fnv7gBAoAJ span{fill:#333;color:#333;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .node rect,#mermaid-svg-u3vSq7Fnv7gBAoAJ .node circle,#mermaid-svg-u3vSq7Fnv7gBAoAJ .node ellipse,#mermaid-svg-u3vSq7Fnv7gBAoAJ .node polygon,#mermaid-svg-u3vSq7Fnv7gBAoAJ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .rough-node .label text,#mermaid-svg-u3vSq7Fnv7gBAoAJ .node .label text,#mermaid-svg-u3vSq7Fnv7gBAoAJ .image-shape .label,#mermaid-svg-u3vSq7Fnv7gBAoAJ .icon-shape .label{text-anchor:middle;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .rough-node .label,#mermaid-svg-u3vSq7Fnv7gBAoAJ .node .label,#mermaid-svg-u3vSq7Fnv7gBAoAJ .image-shape .label,#mermaid-svg-u3vSq7Fnv7gBAoAJ .icon-shape .label{text-align:center;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .node.clickable{cursor:pointer;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .arrowheadPath{fill:#333333;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-u3vSq7Fnv7gBAoAJ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-u3vSq7Fnv7gBAoAJ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-u3vSq7Fnv7gBAoAJ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .cluster text{fill:#333;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .cluster span{color:#333;}#mermaid-svg-u3vSq7Fnv7gBAoAJ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-u3vSq7Fnv7gBAoAJ rect.text{fill:none;stroke-width:0;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .icon-shape,#mermaid-svg-u3vSq7Fnv7gBAoAJ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .icon-shape p,#mermaid-svg-u3vSq7Fnv7gBAoAJ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .icon-shape .label rect,#mermaid-svg-u3vSq7Fnv7gBAoAJ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-u3vSq7Fnv7gBAoAJ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-u3vSq7Fnv7gBAoAJ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-u3vSq7Fnv7gBAoAJ :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
Nmap扫描端口
发现开放SSH服务
加载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。
#mermaid-svg-1ro5t2ZSWXnBZWon{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-1ro5t2ZSWXnBZWon .error-icon{fill:#552222;}#mermaid-svg-1ro5t2ZSWXnBZWon .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-1ro5t2ZSWXnBZWon .marker{fill:#333333;stroke:#333333;}#mermaid-svg-1ro5t2ZSWXnBZWon .marker.cross{stroke:#333333;}#mermaid-svg-1ro5t2ZSWXnBZWon svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-1ro5t2ZSWXnBZWon p{margin:0;}#mermaid-svg-1ro5t2ZSWXnBZWon .edge{stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .section–1 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section–1 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section–1 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section–1 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section–1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section–1 text{fill:#ffffff;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon–1{font-size:40px;color:#ffffff;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge–1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth–1{stroke-width:17;}#mermaid-svg-1ro5t2ZSWXnBZWon .section–1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-0 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-0 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-0 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-0 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-0 text{fill:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon-0{font-size:40px;color:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth-0{stroke-width:14;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-1 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-1 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-1 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-1 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-1 text{fill:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon-1{font-size:40px;color:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth-1{stroke-width:11;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-2 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-2 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-2 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-2 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-2 text{fill:#ffffff;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth-2{stroke-width:8;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-3 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-3 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-3 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-3 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-3 text{fill:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon-3{font-size:40px;color:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth-3{stroke-width:5;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-4 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-4 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-4 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-4 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-4 text{fill:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon-4{font-size:40px;color:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth-4{stroke-width:2;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-5 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-5 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-5 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-5 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-5 text{fill:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon-5{font-size:40px;color:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth-5{stroke-width:-1;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-6 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-6 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-6 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-6 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-6 text{fill:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon-6{font-size:40px;color:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth-6{stroke-width:-4;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-7 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-7 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-7 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-7 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-7 text{fill:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon-7{font-size:40px;color:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth-7{stroke-width:-7;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-8 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-8 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-8 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-8 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-8 text{fill:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon-8{font-size:40px;color:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth-8{stroke-width:-10;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-9 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-9 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-9 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-9 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-9 text{fill:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon-9{font-size:40px;color:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth-9{stroke-width:-13;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-10 rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-10 path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-10 circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-10 polygon,#mermaid-svg-1ro5t2ZSWXnBZWon .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-10 text{fill:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .node-icon-10{font-size:40px;color:black;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .edge-depth-10{stroke-width:-16;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled circle,#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:lightgray;}#mermaid-svg-1ro5t2ZSWXnBZWon .disabled text{fill:#efefef;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-root rect,#mermaid-svg-1ro5t2ZSWXnBZWon .section-root path,#mermaid-svg-1ro5t2ZSWXnBZWon .section-root circle,#mermaid-svg-1ro5t2ZSWXnBZWon .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-1ro5t2ZSWXnBZWon .section-root text{fill:#ffffff;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-root span{color:#ffffff;}#mermaid-svg-1ro5t2ZSWXnBZWon .section-2 span{color:#ffffff;}#mermaid-svg-1ro5t2ZSWXnBZWon .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-1ro5t2ZSWXnBZWon .edge{fill:none;}#mermaid-svg-1ro5t2ZSWXnBZWon .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-1ro5t2ZSWXnBZWon :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
安全三要素 CIA
机密性 Confidentiality
目标:数据不能泄露
常用手段:加密
完整性 Integrity
目标:数据不能被篡改
常用手段:数字签名、校验和
可用性 Availability
目标:资源可以正常访问使用
对抗:拒绝服务攻击
图2 安全三要素思维导图,是分析所有安全风险的基础框架
任何一次安全事件,几乎都会破坏三要素中的一项或者多项。
写在最后
Web安全不是一堆零散漏洞的堆砌,背后是信任边界、成本权衡、持续对抗的底层思想。懂原理,才能看透层出不穷的新型攻击。攻防技术会不断翻新,但底层逻辑万变不离其宗。

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





