本次实操以Python Flask Web程序为例,全程零门槛,所有工具和代码均可直接复制使用。
pip install flasksudo apt update && sudo apt install zaproxy;Windows下载地址 https://github.com/zaproxy/zaproxy/releases/latest;Mac执行 brew install zaproxy新建文件 vuln_demo.py,复制以下完整代码,该项目包含SQL注入和XSS两类常见漏洞:
from flask import Flask, request, escape
import sqlite3
app = Flask(__name__)
@app.route('/user')
def get_user():
username = request.args.get('name')
conn = sqlite3.connect('test.db')
cursor = conn.cursor()
存在SQL注入漏洞的代码(字符串拼接用户输入)
cursor.execute(f"SELECT FROM users WHERE username='{username}'")
user = cursor.fetchone()
conn.close()
return str(user)
@app.route('/comment')
def add_comment():
content = request.args.get('content')
存在XSS漏洞的代码(直接返回用户输入)
return f"你的评论:{content}"
if __name__ == '__main__':
初始化测试数据库
conn = sqlite3.connect('test.db')
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, username TEXT)')
插入测试用户
cursor.execute("INSERT INTO users (username) VALUES ('test1')")
conn.commit()
conn.close()
启动服务
app.run(debug=True)
在命令行执行 python vuln_demo.py,服务启动后会监听http://127.0.0.1:5000。
扫描完成后,切换到左侧的“Alerts”标签,会列出所有检测到的漏洞。本次实操需关注两类漏洞:
/user 接口的SQL注入/comment 接口的反射型XSS关键操作:必须点击漏洞名称,查看“Evidence”字段,确认漏洞是由用户输入拼接导致,避免误报。

原漏洞代码使用字符串拼接用户输入,修改为 参数化查询 即可彻底修复,替换 /user 接口的代码为:
@app.route('/user')
def get_user():
username = request.args.get('name')
conn = sqlite3.connect('test.db')
cursor = conn.cursor()
修复:使用参数化查询,占位符?替代用户输入
cursor.execute("SELECT FROM users WHERE username=?", (username,))
user = cursor.fetchone()
conn.close()
return str(user)
注意:参数化查询的占位符数量必须和输入参数数量一致,参数需用元组包裹(即使单个参数也要加逗号)。
原漏洞代码直接将用户输入返回前端,修改为 转义用户输入 即可修复,替换 /comment 接口的代码为:
@app.route('/comment')
def add_comment():
content = request.args.get('content')
修复:使用flask内置escape函数转义所有特殊字符
return f"你的评论:{escape(content)}"
注意:所有用户可控的输入,包括URL参数、表单数据,在返回给前端前必须转义,禁止直接输出。
Ctrl+C 终止当前Flask服务,重新执行 python vuln_demo.py 启动服务测试所有关联接口,确保功能正常:
/user?name=test1,返回正确的测试用户数据/comment?content=测试内容,返回“你的评论:测试内容”,无异常











易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图