- 确认测试范围:
是 Web 应用?API?移动端?服务器?数据库?
- 定义安全目标:
数据保密性?权限控制?是否需要抗拒绝服务攻击检测?
- 识别用户角色和权限模型
管理员、普通用户、游客,各自能干什么?
- 收集目标信息:
域名/IP地址、开放端口、使用的技术栈(PHP、Java、Node.js 等)等。
- 识别入口点:
表单、URL 参数、Header、API 接口等。
工具推荐:Nmap、WhatWeb、Shodan
- 使用工具或方法识别潜在威胁:
SQL 注入点
登录机制是否容易被暴力破解
Session 是否容易被劫持
- 使用 STRIDE模型 分析威胁(微软提出的一种安全建模方法):
S:Spoofing(伪装)
T:Tampering(篡改)
R:Repudiation(否认)
I:Information Disclosure(信息泄露)
D:Denial of Service(拒绝服务)
E:Elevation of Privilege(权限提升)
静态测试(SAST):
检查代码中是否有硬编码密码、注释中泄露信息等。
动态测试(DAST):
模拟真实攻击,验证是否能成功利用漏洞。
重点测试项目:
输入验证(防止注入)
身份认证机制(是否弱密码、暴力破解)
会话管理(是否使用安全 Cookie、Session 是否可预测)
权限控制(越权访问)
数据传输加密(HTTPS)
工具推荐:Burp Suite、OWASP ZAP、Nikto、Postman + jwt.io、SQLMap
记录每个漏洞:
漏洞类型、发现路径、复现步骤、截图、严重程度(高/中/低)
提供修复建议:
比如:使用参数化 SQL、加密敏感数据、验证用户权限等
工具辅助报告:
Burp Suite 可自动生成漏洞报告
也可以用 Word/Markdown 格式手写更详细的报告
开发修复漏洞后,你要进行 再次验证
漏洞是否真的修复了?
是否引入了新的问题?
通常也会进行一次简单的回归安全测试
需求分析 → 信息收集 → 威胁建模 → 安全测试执行 → 漏洞报告 → 修复验证