文章目录
- 前言
- [一、密码学基础:哈希算法(Hashing Algorithms)](#一、密码学基础:哈希算法(Hashing Algorithms))
-
- [1. MD5 (Message Digest Algorithm 5)](#1. MD5 (Message Digest Algorithm 5))
- [2. SHA (Secure Hash Algorithms)](#2. SHA (Secure Hash Algorithms))
- [3. scrypt](#3. scrypt)
- [4. bcrypt](#4. bcrypt)
- [5. 对比矩阵](#5. 对比矩阵)
- [二、常见 Web 攻击类型与防御](#二、常见 Web 攻击类型与防御)
-
- [1. XSS(跨站脚本攻击,Cross-Site Scripting)](#1. XSS(跨站脚本攻击,Cross-Site Scripting))
- [2. CSRF(跨站请求伪造,Cross-Site Request Forgery)](#2. CSRF(跨站请求伪造,Cross-Site Request Forgery))
- [3. DDoS(分布式拒绝服务攻击,Distributed Denial-of-Service)](#3. DDoS(分布式拒绝服务攻击,Distributed Denial-of-Service))
- [4. 页面劫持(Clickjacking / UI Redress)](#4. 页面劫持(Clickjacking / UI Redress))
- [三、Web 安全最佳实践(Security Best Practices)](#三、Web 安全最佳实践(Security Best Practices))
-
- [1. HTTPS(SSL/TLS)](#1. HTTPS(SSL/TLS))
- [2. CORS(跨域资源共享)](#2. CORS(跨域资源共享))
- [3. CSP(内容安全策略)](#3. CSP(内容安全策略))
- [4. OWASP Top 10(关键风险)](#4. OWASP Top 10(关键风险))
- [5. SSL/TLS (Secure Sockets Layer / Transport Layer Security)](#5. SSL/TLS (Secure Sockets Layer / Transport Layer Security))
- [6. 服务器安全(Server Security)](#6. 服务器安全(Server Security))
- [7. API 安全最佳实践(API Security Best Practices)](#7. API 安全最佳实践(API Security Best Practices))
- 四、学习与工具推荐
- 总结:安全是持续过程
前言
网络安全(Web Security)
了解MD5、SHA、scrypt、bcrypt等哈希算法hashing Algorithms,XSS、CSRF、DDoS、页面劫持等网络攻击的相关知识,
以及,熟悉基于HTTPS、CORS、CSP、OWASP Risks、SSL/TLS、Server Security等安全最佳实践API Security Best Practices。
Web 安全(Web Security) 是现代 Web 开发不可或缺的一部分。核心知识体系,包括密码学基础、常见攻击类型以及防御性安全实践。以下是对这些内容的系统化梳理与深度解析,帮助构建清晰、实用的网络安全认知框架。
一、密码学基础:哈希算法(Hashing Algorithms)
哈希算法将任意长度的数据映射为固定长度的摘要(哈希值),并且这个过程是单向的(理论上无法从哈希值反推出原始数据)。
用于安全存储敏感信息(如密码),不可逆,且需具备抗碰撞、抗暴力破解能力。
1. MD5 (Message Digest Algorithm 5)
- 现状: 已被证明存在严重漏洞(碰撞攻击),不再推荐用于安全相关的场景(如密码存储、数字签名)。
- 历史用途: 曾广泛用于校验数据完整性、早期密码存储(现在不安全)。
2. SHA (Secure Hash Algorithms)
- SHA-1: 曾经是主流,但现在也被认为不够安全,尤其是在需要抗碰撞性的场景中,正在被淘汰。
- SHA-2 (包括 SHA-224, SHA-256, SHA-384, SHA-512): 当前广泛推荐使用的安全哈希算法族。SHA-256 和 SHA-512 是最常用的成员。
- SHA-3: 最新的 NIST 标准,设计上与 SHA-2 不同,提供了另一种选择,但目前应用不如 SHA-2 广泛。
3. scrypt
- 类型: 密钥派生函数 (KDF)。
- 特点: 特意设计得计算密集且内存密集,使得暴力破解成本非常高。常用于密码存储和加密货币挖矿。
4. bcrypt
- 类型: 基于 Blowfish 加密算法的 KDF。
- 特点: 包含盐值(Salt)以防止彩虹表攻击,并且可以通过调整轮数(Cost Factor)来增加计算难度,适应硬件发展。非常适合用于密码哈希。
5. 对比矩阵
| 算法 | 特点 | 安全性 | 适用场景 |
|---|---|---|---|
| MD5 | 快速、128位输出 | ❌ 已被破解(碰撞攻击) | 禁止用于密码存储,仅可用于校验文件完整性(非安全场景) |
| SHA-1 | 160位输出 | ❌ 不安全(Google 已实现碰撞) | 已淘汰 |
| SHA-2(SHA-256/512) | NIST 标准,广泛使用 | ✅ 安全(目前无有效碰撞) | 数字签名、证书、HMAC |
| bcrypt | 自带 salt,可调工作因子(cost) | ✅✅ 强推荐 | 用户密码存储首选 |
| scrypt | 内存硬化(抗 GPU/ASIC 暴力破解) | ✅✅✅ 更强 | 高安全要求场景(如加密货币、金融) |
| Argon2 | 2015 年密码哈希竞赛 winner | ✅✅✅ 最佳实践 | 新项目首选(优于 bcrypt/scrypt) |
🔐 最佳实践:
- 永远不要明文存密码,也不要使用 MD5 或 SHA-1
- 使用
bcrypt/Argon2(慢速哈希函数(Password Hashing Functions)) + 随机 salt- 验证时比对哈希值,而非解密
二、常见 Web 攻击类型与防御
了解这些攻击有助于识别风险并采取防御措施。
1. XSS(跨站脚本攻击,Cross-Site Scripting)
- 原理 :攻击者注入恶意脚本(如
<script>alert(1)</script>),注入到其他用户浏览的网页中。 - 危害: 可以窃取用户 Cookie、会话令牌,冒充用户执行操作,篡改网页内容等。
- 类型 :
- Stored XSS:恶意脚本存入数据库(如评论区)
- Reflected XSS:通过 URL 参数反射(如搜索框未过滤)
- DOM-based XSS:前端 JS 动态操作 DOM 引入漏洞
- 防御 :
- 输入验证和过滤、输出编码(转义 HTML Entity Encode)
- 使用 CSP(Content Security Policy内容安全策略)
- 避免使用危险的 JavaScript 方法。如 eval,
innerHTML,改用textContent - 设置 Cookie 的
HttpOnly(防窃取)
2. CSRF(跨站请求伪造,Cross-Site Request Forgery)
- 原理:攻击者诱导已登录用户在不知情的情况下执行非预期的操作(如转账、修改密码)。
- 利用点: 用户浏览器会自动携带目标网站的 Cookie 发起请求。
- 防御 :
- 使用 Anti-CSRF Token(同步令牌模式):表单/请求头中携带一次性 token
- 设置 Cookie 属性
SameSite=Strict或Lax - 检查
Origin/RefererHeader(辅助手段)
💡 注意:JWT 存于 localStorage 时不受 CSRF 影响(因不会自动发送),但易受 XSS 窃取 → 权衡存储位置。
3. DDoS(分布式拒绝服务攻击,Distributed Denial-of-Service)
- 原理:利用大量的受控计算机(僵尸网络)同时向目标服务器发送海量请求,耗尽服务器资源(带宽、CPU、内存、连接数),使服务不可用,无法正常响应合法用户的请求。
- 危害: 网站瘫痪、服务不可用。
- 常见类型 :
- Volume-based:UDP Flood、ICMP Flood
- Protocol-based:SYN Flood、Ping of Death
- Application-layer:HTTP Flood(模拟真实请求)
- 缓解措施 :
- 使用 CDN / 云防护(Cloudflare、AWS Shield)
- 限流(Rate Limiting)
- Web 应用防火墙(WAF)
- 自动扩容 + 负载均衡
4. 页面劫持(Clickjacking / UI Redress)
-
原理:用透明 iframe 覆盖在合法按钮上,诱骗用户点击。
-
防御:
-
设置 HTTP Header:
javascriptX-Frame-Options: DENY -
使用 CSP:
javascriptContent-Security-Policy: frame-ancestors 'none';
-
三、Web 安全最佳实践(Security Best Practices)
实施这些实践可以显著提升 Web 应用的安全性。
1. HTTPS(SSL/TLS)
- 作用:加密传输、身份认证、防篡改。通过 SSL/TLS 协议加密 HTTP 通信,确保数据在传输过程中的机密性和完整性,防止窃听和篡改。
- 实现:获取并部署 SSL/TLS 证书。
- 关键配置 :
- 证书由可信 CA 签发(避免自签名)
- 定期更新证书(Let's Encrypt 自动化)
- 使用 TLS 1.2+(禁用 SSLv3、TLS 1.0/1.1)
- 启用 HSTS(
Strict-Transport-Security: max-age=31536000)
2. CORS(跨域资源共享)
浏览器的安全机制,限制网页从不同源(域名、协议、端口)请求资源。服务器可以通过设置 CORS 头部来明确允许哪些外部源访问其资源。
- 目的:安全地允许跨域请求(浏览器默认阻止)。
- 安全配置原则 :
- 不要 设置
Access-Control-Allow-Origin: *(除非公开 API) - 明确指定可信源:
Access-Control-Allow-Origin: https://trusted.com - 敏感操作(如带 Cookie)需设置
credentials: true+ 精确 Origin - 限制暴露的 Header:
Access-Control-Allow-Headers
- 不要 设置
3. CSP(内容安全策略)
一个额外的安全层,用于检测和削弱某些类型的攻击,包括 XSS 和数据注入攻击。
-
作用:防止 XSS、数据注入、非法资源加载。 限制内联脚本执行、限制外部资源加载来源,有效缓解 XSS。
-
工作方式:通过 HTTP 头部或 标签告诉浏览器哪些动态资源(脚本、样式、图片等)是被允许加载的。
-
示例策略:
javascriptContent-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.trusted.com; img-src *; -
进阶 :启用
report-uri收集违规日志 -
工具:使用 CSP Evaluator 检查策略
4. OWASP Top 10(关键风险)
OWASP(开放式 Web 应用程序安全项目)定期发布的十大最关键的 Web 应用程序安全风险列表(如注入、失效的身份认证、敏感数据泄露、XML 外部实体 (XXE)、不安全的反序列化等)。
为开发者和安全人员提供了权威的风险意识和优先级参考,指导安全开发和测试。
最新版(2021)重点关注:
- Broken Access Control(越权访问)
- Cryptographic Failures(加密失效,如明文密码)
- Injection(SQL/NoSQL/Command 注入)
- Insecure Design(设计缺陷)
- Security Misconfiguration(默认配置、错误信息泄露)
- Vulnerable Components(使用含漏洞的第三方库)
- Identification and Auth Failures(弱认证、会话管理)
- Software and Data Integrity Failures(CI/CD 污染)
- Security Logging & Monitoring Failures
- SSRF(服务端请求伪造)
✅ 建议:定期进行 SAST/DAST 扫描 ,使用 Dependency-Check 扫描依赖漏洞。
5. SSL/TLS (Secure Sockets Layer / Transport Layer Security)
- 意义: 实现 HTTPS 的底层加密协议。TLS 是 SSL 的继任者,更安全。
- 作用: 提供加密(保密性)、数据完整性校验、服务器(有时也包括客户端)身份认证。
6. 服务器安全(Server Security)
- 操作系统及中间件安全: 及时更新补丁、最小化安装、关闭不必要的服务和端口。如,中间件(Nginx、Redis、MySQL)。
- 防火墙配置: 限制入站和出站流量。如,限制开放端口(如只开 80/443)。
- 访问控制: 强密码策略、SSH 密钥认证、最小权限原则。
- 日志监控: 记录和分析系统及应用日志,及时发现异常行为。如,异常登录、高频请求。
- 文件权限管理: 确保敏感文件和目录有正确的访问权限。如,最小权限原则:服务以非 root 用户运行。
- 入侵检测/防御系统 (IDS/IPS)。
- 禁用目录列表 、隐藏版本号 (如
Server: nginx→ 关闭或泛化)
7. API 安全最佳实践(API Security Best Practices)
- 使用 HTTPS: 所有 API 通信都应加密。
- 安全标头: 设置适当的 HTTP 安全头(如 HSTS, X-Content-Type-Options, X-Frame-Options)。
- 依赖项安全: 定期更新第三方库和组件,修复已知漏洞。
- 认证与授权:正确使用 JWT/OAuth2 、 RBAC/ABAC 等机制。
- 输入验证:严格校验所有传入 API 的数据(如 JSON Schema),防止注入攻击。
- 速率限制 (Rate Limiting) :防止滥用和 DDoS 攻击。如,暴力破解、爬虫(如 100 req/min/IP)。
- 敏感数据脱敏:不在日志或错误信息中暴露敏感数据,传输时使用 HTTPS。如,响应中不返回密码、身份证等。
- 审计日志:记录关键操作(谁、何时、做了什么)
四、学习与工具推荐
- 学习资源 :
- OWASP Web Security Testing Guide (WSTG)
- PortSwigger Web Security Academy(免费实战)
- 工具 :
- Burp Suite:拦截/修改请求,测试漏洞
- OWASP ZAP:开源渗透测试工具
- Nmap / Nikto:服务器扫描
- jwt.io:调试 JWT
总结:安全是持续过程
"安全不是功能,而是属性。"
------ 你需要在设计、开发、部署、运维全生命周期中嵌入安全思维。