Web —— 基础知识

在这里先跳出原本的叙事逻辑,因为有必要先介绍介绍 Web/Network 的一些课程基础。

在计算机相关专业会学到,与 Web/Network 最相关的基础课包括:

计算机网络:TCP/IP、网段与路由、HTTP、协议分析

操作系统:环境、进程、文件、Windows、Linux

软件工程:如何搭建整个软件应用程序

当然,还有一些水课(如 软件体系架构),也是很有必要的。它们介绍了工程中通常会采用的设计模式,在 Web 代码审计时会频繁遇到。

思考一个经典的问题:用户打开浏览器,输入网址,直到看到网页内容;总共经历哪些过程?

以网络的角度思考,按照 OSI 七层模型分类,这个过程其实涉及到了非常多的协议:

二层:ARP 或 ICMPv6-RA

三层:IP Fragmentation/NAT

四层:TCP 三次握手/UDP

七层:DHCP/DNS/HTTP/TLS

而当中的每一环都可能存在 "安全问题",这是国内外 Web 的前沿研究方向,包括 DNS 服务器实现上的 \0 截断漏洞、不遵循 HTTP RFC 标准的 CDN 中间件解析差异漏洞、IPv6 RA 重分配漏洞等等。

对于传统 Web 而言,其实并不需要过多细究这其中的具体实现,但仍然需要理解它们的基本原理及应用,举个例子,在 SSRF(Server-Side Request Forgery)漏洞中,请求远程资源时,便可以通过 DNS Rebinding(重绑定)来绕过某些访问限制。

这些基础知识将会为你在 Web 的长远发展保驾助航。

下一章节: Web —— 从浏览器开始