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 的长远发展保驾助航。