Web安全初学者入门基础
字数 3497 2025-08-22 12:23:42
Web安全初学者入门基础 - 全面教学文档
1. Web访问流程详解
1.1 完整访问流程
- 用户输入域名并发起请求:用户在浏览器地址栏输入URL并回车
- DNS解析:
- 浏览器检查本地缓存
- 向配置的DNS服务器发起递归查询
- 通过根DNS→TLD服务器→权威DNS逐级查询
- 最终获取IP地址
- 建立TCP连接(三次握手):
- 客户端发送SYN包
- 服务器回应SYN-ACK包
- 客户端发送ACK包
- TLS/SSL加密握手(HTTPS):
- 客户端Hello
- 服务器Hello(含证书)
- 密钥交换
- 完成握手
- 发送HTTP请求:
- 请求行(方法+URL+版本)
- 请求头(User-Agent、Accept等)
- 请求体(POST数据)
- 后端处理请求:
- Web服务器接收请求
- 应用服务器处理业务逻辑
- 数据库查询
- 生成响应
- 发送HTTP响应:
- 状态行(状态码)
- 响应头(Content-Type等)
- 响应体(HTML/JSON等)
- 浏览器渲染页面:
- 解析HTML构建DOM树
- 解析CSS构建CSSOM树
- 执行JavaScript
- 渲染绘制页面
- 关闭TCP连接(四次挥手)
1.2 DNS解析详细过程
- 浏览器缓存 → hosts文件 → 本地DNS服务器
- 查询过程:
- 本地DNS向根域名服务器查询
- 根域名返回TLD服务器地址
- 查询TLD服务器获取权威DNS
- 权威DNS返回最终IP
- DNS记录类型:
- A记录:域名→IPv4
- AAAA记录:域名→IPv6
- CNAME记录:域名别名
- MX记录:邮件服务器
- NS记录:域名服务器
2. Web架构组成
2.1 核心组件
-
客户端:
- 浏览器(Chrome/Firefox等)
- 前端框架(React/Vue/Angular)
- 移动端应用
-
Web服务器:
- Apache/Nginx:静态资源、反向代理
- Tomcat/Jetty:Java应用服务器
- Node.js:高性能JS运行时
-
应用服务器:
- Django/Flask(Python)
- Spring Boot(Java)
- Ruby on Rails
- Express.js(Node)
-
数据库层:
- 关系型:MySQL/PostgreSQL/Oracle
- NoSQL:MongoDB/Cassandra/Redis
-
API层:
- RESTful API(JSON格式)
- GraphQL(灵活查询)
- gRPC(高性能RPC)
-
缓存层:
- Redis:内存数据库/缓存
- Memcached:简单缓存
- CDN:静态资源缓存
-
负载均衡:
- Nginx/HAProxy
- AWS ELB
- 算法:轮询/加权/最少连接
-
安全层:
- HTTPS/TLS加密
- WAF防火墙
- 认证授权(OAuth2/JWT)
-
监控系统:
- Prometheus+Grafana
- ELK日志系统
- New Relic/APM
3. 域名系统
3.1 域名结构
- 顶级域名(TLD):.com/.org/.net
- 二级域名:example.com中的"example"
- 子域名:www.example.com中的"www"
3.2 域名工具
-
WHOIS查询:
whois example.com- 注册信息查询
- 注册商/注册日期/到期日
-
DNS查询工具:
dig example.com nslookup example.com- 查询A/MX/NS记录
-
子域名枚举:
sublist3r -d example.com subfinder -d example.com- 信息收集重要步骤
-
SSL证书检查:
openssl s_client -connect example.com:443 sslyze --certinfo example.com
4. URI与URL
4.1 核心概念
- URI:统一资源标识符(广义)
- URL:统一资源定位符(含访问方式)
- URN:统一资源名称(永久标识)
4.2 URL组成
scheme://host:port/path?query#fragment
- scheme:http/https/ftp
- host:域名/IP
- port:服务端口
- path:资源路径
- query:查询参数
- fragment:文档片段
5. HTTP协议详解
5.1 协议版本
- HTTP/1.0:基本功能
- HTTP/1.1:持久连接/管道化
- HTTP/2:二进制协议/多路复用
- HTTP/3:基于QUIC/UDP
5.2 请求方法
| 方法 | 描述 |
|---|---|
| GET | 获取资源 |
| POST | 提交数据 |
| PUT | 更新资源 |
| DELETE | 删除资源 |
| HEAD | 获取头信息 |
| PATCH | 部分更新 |
5.3 状态码
| 状态码 | 描述 |
|---|---|
| 200 | 成功 |
| 301 | 永久重定向 |
| 302 | 临时重定向 |
| 400 | 错误请求 |
| 401 | 未授权 |
| 403 | 禁止访问 |
| 404 | 未找到 |
| 500 | 服务器错误 |
5.4 重要头字段
请求头:
- Host/Accept/User-Agent
- Cookie/Authorization
- Content-Type
响应头:
- Set-Cookie/Location
- Cache-Control
- Content-Encoding
6. HTTPS安全协议
6.1 TLS握手过程
- 客户端Hello(支持算法/随机数)
- 服务器Hello(选择算法/证书)
- 证书验证(CA链验证)
- 密钥交换(预主密钥)
- 生成会话密钥
- 加密通信开始
6.2 证书类型
- DV证书:域名验证
- OV证书:组织验证
- EV证书:扩展验证
6.3 安全特性
- 加密传输(防窃听)
- 完整性校验(防篡改)
- 身份认证(防中间人)
7. TCP协议
7.1 核心特性
- 面向连接(三次握手)
- 可靠传输(确认/重传)
- 流量控制(滑动窗口)
- 拥塞控制(慢启动/快恢复)
7.2 连接管理
三次握手:
- SYN →
- SYN-ACK ←
- ACK →
四次挥手:
- FIN →
- ACK ←
- FIN ←
- ACK →
8. Socket编程
8.1 基本概念
- 网络通信端点
- 协议族:AF_INET/AF_INET6
- 类型:SOCK_STREAM/SOCK_DGRAM
8.2 Python示例
服务器端:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', 12345))
s.listen(1)
conn, addr = s.accept()
data = conn.recv(1024)
conn.send(b'Response')
conn.close()
客户端:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 12345))
s.send(b'Hello')
data = s.recv(1024)
s.close()
9. Web后端技术
9.1 核心功能
- 请求路由处理
- 业务逻辑实现
- 数据库CRUD操作
- 认证授权(JWT/OAuth)
- API设计开发
- 缓存优化
- 安全防护
9.2 技术栈
- Python:Django/Flask
- Java:Spring Boot
- Node.js:Express/Koa
- PHP:Laravel
10. Web前端技术
10.1 核心技术
- HTML:页面结构
- CSS:样式表现
- JavaScript:交互逻辑
10.2 现代框架
- React:组件化/Virtual DOM
- Vue:响应式/渐进式
- Angular:完整框架
10.3 关键概念
- 响应式设计(媒体查询)
- SPA单页应用(前端路由)
- AJAX异步通信
11. Cookie机制
11.1 核心属性
- Name/Value:键值对
- Domain/Path:作用域
- Expires/Max-Age:有效期
- Secure/HttpOnly:安全标志
- SameSite:跨站控制
11.2 安全实践
- 使用HttpOnly防XSS
- 使用Secure强制HTTPS
- SameSite防CSRF
- 合理设置过期时间
12. 同源策略
12.1 同源定义
协议+域名+端口完全相同
12.2 跨域解决方案
- CORS(服务端设置):
Access-Control-Allow-Origin: * - JSONP(动态script标签)
- 代理服务器
- WebSocket
13. Web发展历程
13.1 Web 1.0
- 静态HTML页面
- 只读模式
- 单向信息传递
- 示例:早期Yahoo
13.2 Web 2.0
- 动态内容/AJAX
- 用户生成内容
- 社交互动
- 示例:Facebook/YouTube
13.3 Web 3.0
- 语义网/人工智能
- 去中心化/区块链
- 数据主权
- 示例:Ethereum/IPFS
14. 安全最佳实践
14.1 前端安全
- 输入验证/输出编码
- CSP内容安全策略
- XSS防护
14.2 后端安全
- 参数化查询防SQL注入
- CSRF令牌
- 速率限制
14.3 传输安全
- 强制HTTPS
- HSTS头
- 证书定期更新
15. 性能优化
15.1 前端优化
- 资源压缩合并
- 图片懒加载
- 代码拆分
15.2 后端优化
- 数据库索引
- 查询优化
- 缓存策略
15.3 网络优化
- CDN分发
- HTTP/2多路复用
- 预加载/prefetch
本教学文档全面涵盖了Web安全入门所需的各个技术领域,从底层网络协议到上层应用开发,从基础概念到安全实践,可作为Web开发者和安全研究人员的系统学习参考。