🔒 安全风险扫描报告
🔴 SQL注入风险
SQL注入攻击者通过在用户输入中注入恶意SQL代码,改变原始查询的逻辑结构,从而非法访问或操作数据库。
描述: SQL查询直接拼接用户输入
风险代码:
$sql="select id,username,password from username where username='$name' AND password='$pwd';";
🎯 攻击向量:
输入: ' OR '1'='1' --
结果: SELECT * FROM username WHERE username='' OR '1'='1' --' AND password=''
✅ 修复建议: 使用预处理语句或参数化查询
描述: 将用户输入拼接到系统命令
风险代码:
$command = "python send_email.py -s $sender -r $receiver --subject \"$subject\" --body \"$body\"";
🎯 攻击向量:
输入: subject'; cat /etc/passwd; echo '
结果: 执行系统命令读取敏感文件
✅ 修复建议: 使用escapeshellarg()过滤参数,或使用API代替系统命令
🟠 XSS跨站脚本风险
XSS攻击者通过在网页中注入恶意脚本代码,当用户浏览该页面时,恶意脚本会在用户的浏览器中执行,从而窃取用户的敏感信息。
描述: 直接输出Cookie值到HTML
风险代码:
echo $_COOKIE['username'];
🎯 攻击向量:
设置Cookie: <script>alert('XSS')</script>
结果: 当其他用户访问时执行恶意脚本
✅ 修复建议: 使用htmlspecialchars()进行HTML编码
描述: 直接输出Cookie值到HTML
风险代码:
echo $_COOKIE['password'];
🎯 攻击向量:
设置Cookie: <img src=x onerror=alert(document.cookie)>
结果: 窃取用户会话Cookie
✅ 修复建议: 使用htmlspecialchars()进行HTML编码
🔴 链接注入风险
链接注入攻击者利用应用程序未对用户输入的URL进行严格验证的漏洞,将恶意链接注入到页面中,可能导致钓鱼攻击或恶意软件传播。
描述: 使用用户输入进行页面重定向
风险代码:
if (isset($_GET['link']) && !empty($_GET['link'])) { header("location:" . $_GET['link']); }
🎯 攻击向量:
访问: login.php?link=http://evil.com/phishing.html
结果: 用户被重定向到恶意网站
✅ 修复建议: 验证URL是否以/开头,或使用白名单域名
📋 风险汇总表
| 风险类型 |
文件 |
行号 |
风险等级 |
描述 |
| SQL注入 |
login.php |
46-47 |
🔴 高危 |
SQL查询直接拼接用户输入 |
| SQL注入 |
send_mail.php |
12-15 |
🔴 高危 |
将用户输入拼接到系统命令 |
| XSS |
login.php |
73 |
🟠 中危 |
直接输出Cookie值到HTML |
| XSS |
login.php |
79 |
🟠 中危 |
直接输出Cookie值到HTML |
| 链接注入 |
login.php |
31-32 |
🔴 高危 |
使用用户输入进行页面重定向 |
📖 安全防护建议
- SQL注入防护: 始终使用参数化查询(预处理语句)进行数据库操作,禁止直接拼接SQL语句
- XSS防护: 在输出用户可控数据到HTML时,必须使用htmlspecialchars()进行HTML编码
- 链接注入防护: 重定向或构建URL时,验证目标地址是否在允许的域名范围内
- 命令注入防护: 避免将用户输入拼接到系统命令中,如必须使用,应使用escapeshellarg()过滤
- 安全编码规范: 建立代码审查机制,确保所有用户输入都经过适当的验证和清理
⚠️ 重要提醒
- 本报告基于静态代码分析,实际风险可能需要结合业务逻辑进行评估
- 建议定期进行安全审计和渗透测试
- 已防护的文件(如products.php)不在本次报告中
- 扫描时间: 2026-11-08 01:00:54