《白帽子讲Web安全》全总结|小白也能看懂的黑客与保安大战

开篇灵魂拷问:白帽子、黑帽子,到底谁是好人?

在讲安全之前,道哥先给咱们分清了“江湖门派”,一句话搞定区别,记死了:

👉 黑帽子:就是“网络小偷+破坏狂”,精通黑客技术,但心思不正,专门找网站漏洞,偷数据、搞破坏、薅羊毛,只要能获利,啥缺德事都干,思考问题只盯“怎么钻空子”,主打一个“单点突破”;

👉 白帽子:就是“网站保安+漏洞修复师”,和黑帽子懂的技术一样多,但立场完全相反,以“守护互联网安全”为己任,主动找网站漏洞,然后告诉站长“你家墙破了,快补”,思考问题主打一个“全面防守”,不让黑帽子有可乘之机。

道哥还补了句扎心又好笑的话:“互联网本来是安全的,自从有了研究安全的人之后,互联网就变得不安全了”——不是安全研究者搞事,是黑帽子总想钻研究出来的漏洞搞破坏,而白帽子,就是和他们对着干的“正义担当”。

全书核心逻辑也很简单:站在白帽子的视角,先讲“安全到底是什么”,再拆“黑帽子常用的套路”,最后教“怎么防、怎么修”,全程不绕弯,干货直给。

第一部分:安全世界观|搞懂这几点,你就超越80%的小白

这部分相当于“安全入门心法”,道哥没讲复杂理论,只给咱们掰扯清楚3个核心问题,全程生活化比喻,好记到离谱:

1. 安全的本质:说白了就是“信得过”

道哥用一个超形象的例子讲透了:就像你家保管贵重物品,得满足3个条件——锁是靠谱的(没人能轻易撬开)、钥匙没外流(只有你能打开)、放锁的地方安全(不会被人偷偷换锁)。

Web安全也是一样,本质就是“信任问题”:网站要相信“访问者是好人”,访问者要相信“网站不会偷我的信息”,而白帽子的工作,就是确保这份“信任”不被黑帽子破坏——不让黑帽子假装“好人”,不让网站泄露“访客信息”。

补充一句:两个不同“信任区域”的边界,就叫“信任边界”,比如你家(信任区)和小区公共区域(非完全信任区),门口的保安,就是守护这个边界的人。

2. 安全三要素:机密性、完整性、可用性(大白话版)

这三个词是Web安全的“铁三角”,少一个都不行,用唠嗑的话翻译一下,看完再也忘不掉[1]:

– 机密性:就是“不该看的人看不到”,比如你的银行卡密码、聊天记录,只有你自己能看,别人偷不走、看不到,相当于“你的日记锁在抽屉里,没人能翻”;

– 完整性:就是“不该改的人改不了”,比如你付的订单金额、发的朋友圈内容,不会被人偷偷篡改,相当于“你写好的日记,没人能偷偷划掉、修改”;

– 可用性:就是“该能用的时候能用”,比如你想逛淘宝、付账单,网站不会突然崩掉、打不开,相当于“你想写日记的时候,日记本就在手边,不会凭空消失”。

额外补充:后来又加了可审计性、不可抵赖性,但这三个是基础中的基础,记牢就够小白用了。

3. 白帽子兵法:守护网站的“6个保命原则”

道哥给白帽子(还有开发者)总结了几个“防守心法”,不用死记术语,记住生活化的解释就行:

– 默认安全原则:网站默认“所有人都是坏人”,要先设防,再给“好人”放行(比如白名单),比“默认所有人是好人,再拦坏人”(黑名单)靠谱多了;

– 最小权限原则:给网站的“权限”能少就少,比如负责“展示页面”的代码,就不让它有“读取用户密码”的权限,相当于“保安只负责守门,不随便进你家”;

– 纵深防御原则:不要只靠一道防线,比如大门加防盗门、防盗门加监控,多道防线才能防住漏网之鱼(别犯“木桶效应”,最短的板决定你的安全等级);

– 数据与代码分离原则:数据就是数据,代码就是代码,别让数据被当成代码执行,相当于“菜是菜、锅是锅,别把菜当成锅来烧”;

– 不可预测性原则:用加密、随机数来防黑帽子,比如网站的登录验证码、CSRF Token,让黑帽子猜不到、摸不着,相当于“你家钥匙每天换一把,小偷就算知道锁的样子,也打不开”。

4. 安全评估:怎么判断网站“有多不安全”?

白帽子找漏洞前,会先做“安全评估”,步骤很简单,小白也能看懂:

第一步:划分资产等级——先搞清楚“网站最值钱的是什么”(比如用户手机号、交易数据),重点保护值钱的,相当于“先知道你家最贵重的是珠宝还是现金,重点守着”;

第二步:威胁分析(STRIDE模型)——用6个维度判断“黑帽子可能怎么搞事”,翻译如下:

S(伪装):冒充别人身份(比如冒充你登录微信);T(篡改):修改数据(比如把你订单金额从100改成10000);R(抵赖):做完坏事不承认(比如偷了你的数据,却说“不是我干的”);I(信息泄露):把机密信息露出去(比如网站泄露你的手机号);D(拒绝服务):让网站用不了(比如搞崩淘宝,大家都没法购物);E(提升权限):偷偷拿到更高权限(比如普通用户,偷偷变成网站管理员);

第三步:风险分析——给威胁打分,高威胁(12-15分)优先修,中威胁(8-11分)慢慢补,低威胁(0-7分)适当关注;

第四步:设计安全方案——针对找到的威胁,搞防守策略(比如怕信息泄露,就给数据加密)。

第二部分:客户端脚本安全|浏览器里的“暗战”

这部分讲的是“你用的浏览器里,可能藏着哪些坑”,黑帽子常在这里搞小动作,白帽子也在这里设防线,重点讲3个核心知识点,全程不聊复杂代码:

1. 同源策略:浏览器的“家规”,别让外人乱闯

同源策略是浏览器的“安全底线”,简单说就是:不同“源”的网站,不能互相干扰、互相访问数据。

先搞懂:什么是“源”?就是网站的“身份证”,由3部分组成——域名(比如a.com)、端口(比如8080)、协议(比如http/https),只要有一个不一样,就是“不同源”。

比喻一下:同源策略就像“小区家规”,你家(a.com)和邻居家(b.com),虽然都在一个小区(互联网),但邻居家的小孩,不能随便进你家翻东西、改东西。

重点提醒:浏览器里的script、img等带src属性的标签,能跨域加载资源(比如a.com加载b.com的图片),但不能读写返回的内容,相当于“你能看邻居家的窗户,但不能进去摸里面的东西”[1]。

2. 浏览器沙箱:给“坏代码”装个“笼子”

沙箱就是“资源隔离的笼子”,浏览器会把“不可信的代码”(比如黑帽子写的恶意脚本)关在沙箱里,不让它访问沙箱外面的资源(比如你的电脑文件、手机相册)。

比喻一下:就像你家的宠物笼,宠物在笼子里随便闹、随便蹦,就算再调皮,也出不来,伤不到人、碰不到家里的贵重物品——沙箱里的恶意代码,再嚣张,也搞不到你电脑里的核心信息。

补充:如果非要跨沙箱交换数据,只能走“指定通道”(比如封装好的API),相当于“宠物想出门,只能通过你打开的门,还得经过你同意”。

3. XSS攻击:最常见的“浏览器陷阱”,小白也可能中招

XSS攻击,说白了就是“黑帽子把恶意代码,偷偷植入到你看的网页里,让浏览器执行”,相当于“有人偷偷在你家零食里藏了泻药,你吃了就中招”,分3种类型,区别很简单:

① 反射型XSS(非持久型):一次性攻击,黑帽子骗你点一个恶意链接,链接里藏着恶意代码,你一点,浏览器就执行代码(比如偷你的Cookie),但你关了页面,就没事了——相当于“骗子发假红包链接,你一点就中招,关了链接就安全了”;

② 存储型XSS(持久型):长期攻击,黑帽子把恶意代码,偷偷存到网站服务器上(比如博客评论、论坛发帖、朋友圈留言),只要有人访问这个页面,就会执行恶意代码——相当于“有人在你家小区公告栏,贴了一张带毒的海报,谁看谁中招,除非海报被撕掉”;

③ DOM型XSS:通过修改页面结构搞事,黑帽子不修改服务器数据,只偷偷修改你浏览器里的页面结构(比如把“确认付款”按钮,改成“转账给黑帽子”),你一点就中招——相当于“有人偷偷换了你家的开关,你以为按的是灯,其实按的是报警器”。

白帽子怎么防?3个简单方法:

– 给Cookie加HttpOnly标识:相当于“给Cookie加个锁,黑帽子就算拿到,也用不了”;

– 输入过滤:网站过滤掉恶意代码(比如评论里的<script>标签),相当于“小区保安拦着可疑人员,不让他进小区贴海报”;

– 输出转义:把用户输入的内容,转换成“普通文本”,不让浏览器当成代码执行(比如把<改成<,让恶意代码失效)。

第三部分:服务端应用安全|网站后台的“攻防大战”

如果说客户端是“浏览器里的暗战”,那服务端就是“网站后台的正面战场”——网站的核心数据(用户密码、交易记录)都存在这里,黑帽子拼命想闯进去,白帽子拼命守,重点讲4个最常见的攻击套路+防御方法[3]:

1. SQL注入:黑帽子的“万能钥匙”,最容易中招的漏洞

SQL注入是黑帽子最爱的攻击方式之一,简单说就是:黑帽子把恶意的SQL语句,偷偷输入到网站的输入框里(比如登录框、搜索框),欺骗网站服务器执行,从而拿到数据库里的核心数据(比如用户密码、手机号)。

比喻一下:你去餐厅点餐,服务员问你“点什么”,你正常说“一份汉堡”,但黑帽子会说“一份汉堡,顺便把你家的账本拿给我看”,而服务员(网站服务器)居然照做了——这就是SQL注入,本质是“网站没过滤恶意输入,被黑帽子骗了”。

常见的SQL注入类型:

– Union注入:把两个查询语句拼在一起,一次性拿到更多数据;

– 盲注:网站不返回错误信息,黑帽子通过“猜”的方式,慢慢拿到数据(比如猜密码长度、猜每一位字符);

– 二次注入:先把恶意代码存到网站,再诱导网站执行(比如先注册一个带恶意代码的账号,再让网站读取这个账号信息)。

防御方法(重点记):

– 用参数化查询:相当于“服务员只认菜单上的菜,你说别的,一概不听”,不让黑帽子的恶意SQL语句生效;

– 输入过滤:过滤掉SQL语句里的特殊字符(比如’、or、and),相当于“服务员听到‘账本’‘密码’这类词,直接拒绝”;

– 最小权限:给数据库账号最小权限,就算被注入,黑帽子也拿不到全部数据(比如只能看普通用户信息,看不到管理员密码)。

2. CSRF攻击:“借刀杀人”的套路,偷偷帮你做坏事

CSRF攻击,全称“跨站请求伪造”,套路超阴险:黑帽子骗你在“已登录网站”的情况下,点击一个恶意链接,浏览器会带着你的登录凭证(Cookie),自动向网站发送请求,偷偷帮你做坏事(比如转账、发朋友圈、删数据)。

比喻一下:你登录了网银(已拿到“通行证”),然后点了黑帽子发的恶意链接,这个链接会自动向网银发送“转账1000元给黑帽子”的请求,网银看到你有“通行证”,就以为是你自己操作的,直接执行了——黑帽子没偷你的密码,却借你的“身份”做了坏事。

防御方法:

– 加Anti-CSRF Token:网站给每个请求加一个“专属暗号”,只有网站生成的暗号,才能执行请求,黑帽子猜不到、拿不到,就没法伪造请求;

– 校验Referer:网站检查请求来自哪里,不是自己网站的请求,直接拒绝(比如网银只接受来自自己官网的请求,别的网站的请求一概不处理);

– 给Cookie加SameSite属性:限制Cookie只能在自己网站使用,别的网站不能借用(相当于“你的通行证,只能在自己小区用,别的小区不认”)。

3. 点击劫持:“偷梁换柱”的陷阱,你点的不是你想点的

点击劫持,简单说就是:黑帽子把恶意按钮(比如“确认转账”“授权登录”),藏在好看的图片、按钮下面(比如“领取红包”“查看福利”),你以为自己点的是福利,其实点的是恶意按钮,偷偷执行了黑帽子想让你做的事。

比喻一下:你看到一张“点击领100元红包”的图片,开心地点了一下,结果图片下面藏着“转账500元”的按钮,你一点,就相当于确认了转账——全程你都不知道,自己被“视觉欺骗”了[3]。

防御方法:

– 用X-Frame-Options属性:不让别的网站把自己的页面,嵌在iframe里(相当于“不让别人把你的海报,贴在他的恶意页面上”);

– Frame Busting:网站自己检测,如果被嵌在别的页面里,就自动跳出来(相当于“你的海报,被人贴在恶意墙上,就自动掉下来”);

– 给Cookie加SameSite属性:和防御CSRF一样,限制Cookie的使用范围,就算被点击劫持,也没法执行恶意请求。

4. 其他常见漏洞:简单带过,小白也能识别

– 文件上传漏洞:黑帽子把恶意文件(比如病毒、木马),伪装成普通文件(比如图片、文档),上传到网站服务器,然后执行恶意文件,控制网站;防御:过滤文件类型、扫描文件内容,不让恶意文件上传;

– 命令执行漏洞:黑帽子通过网站输入框,输入恶意命令,让网站服务器执行(比如删除网站数据、控制服务器);防御:过滤恶意命令、限制命令执行权限;

– Cookie安全漏洞:黑帽子偷你的Cookie,冒充你登录网站;防御:给Cookie加HttpOnly、Secure属性,定期更换Cookie。

第四部分:互联网公司安全运营|不止防守,还要“长治久安”

道哥在书里强调:Web安全,不是“找到漏洞、修好漏洞”就完事了,而是“长期运营”——就像你家小区,不是装了防盗门就万事大吉,还得有保安巡逻、定期检查锁具、提醒业主注意安全,网站也是一样。

重点讲2个核心点,适合所有和网站相关的人看:

1. 安全开发流程:从源头避免漏洞

很多网站出漏洞,不是“技术不行”,而是“开发的时候没考虑安全”——就像盖房子,不是盖完了再装防盗门,而是从地基开始,就考虑“怎么防盗、怎么防火”。

道哥建议:开发网站的每一步,都要加“安全检查”[3]:

– 需求阶段:明确“要保护什么资产”(比如用户数据、交易记录);

– 设计阶段:按照“白帽子兵法”设计,比如遵循最小权限、数据与代码分离;

– 开发阶段:避免写有漏洞的代码,比如不用拼接SQL语句(防止注入)、过滤用户输入(防止XSS);

– 测试阶段:专门找“安全测试人员”(白帽子),模拟黑帽子攻击,找出漏洞;

– 上线后:定期扫描漏洞、监控异常,发现问题及时修复。

2. 安全运营:长期守护,别让漏洞“死灰复燃”

安全运营的核心,就是“持续监控、持续修复、持续教育”:

– 持续监控:实时盯着网站的访问记录、数据流向,一旦发现异常(比如有人频繁尝试登录、大量读取用户数据),就及时预警;

– 持续修复:就算上线后,也会出现新的漏洞(比如新的黑客技术、新的浏览器特性),要定期扫描、及时修复,不能“一劳永逸”;

– 持续教育:给开发人员、运营人员培训安全知识,比如“怎么避免SQL注入”“怎么识别恶意链接”,毕竟“一个人的疏忽,可能导致整个网站被黑”——就像小区保安,要定期提醒业主“锁好门窗、不给陌生人开门”。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部