news 2026/4/16 14:07:44

基于 Python 的简易 Web 应用防火墙(WAF)设计 与实现 信息安全技术课程设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 Python 的简易 Web 应用防火墙(WAF)设计 与实现 信息安全技术课程设计

期末了,又搞学校的那些鬼课设。。。

课程设计四 基于 Python 的简易 Web 应用防火墙(WAF)设计

与实现
一、项目背景与研究意义
随着 Web 应用在企业信息系统中的广泛部署,Web 攻击已成为最常见、最直接的安
全威胁形式。在真实安全事件中,大量 Web 攻击并非依赖复杂漏洞,而是通过自动化工
具反复利用以下常见攻击方式:
(1)SQL 注入
(2)跨站脚本攻击(XSS)
(3)命令注入
(4)路径遍历
(5)Web 扫描与参数探测
在实际安全防护体系中,Web 应用防火墙(Web Application Firewall,WAF)通常部
署在 Web 应用之前,对 HTTP 请求进行实时检测、过滤和拦截,是 Web 安全防护的重
要组成部分。
本项目以教学和工程实践为目的,在不依赖商业安全设备的前提下,设计并实现一
个基于 Python 的简易 Web 应用防火墙系统,通过规则匹配方式对 HTTP 请求中的常见攻
击特征进行检测和拦截,帮助学生理解 WAF 的基本工作原理与实现方法。
二、项目目标与能力培养
2.1 项目总体目标
通过本课程设计,使学生完成一个可运行的简易 WAF 系统,实现对 Web 请求的安
全检测与控制,完整经历:需求分析 → 系统设计 → 编码实现 → 测试验证 → 总结
优化。
2.2 知识目标
通过本项目,学生应能够:
(1)理解 Web 应用的基本工作流程(HTTP 请求与响应)。
(2)理解常见 Web 攻击的基本原理及其特征表现。
(3)掌握 Web 请求参数的获取与解析方法。
(4)理解 Web 应用防火墙的基本防护思想与实现逻辑。
2.3 能力目标

  • 11 -
    智能网联汽车学院课程设计指导书
    通过本项目,学生应具备以下能力:
    (1)分析 Web 请求中潜在安全风险的能力。
    (2)设计基于规则的安全检测逻辑的能力。
    (3)实现请求拦截与安全日志记录的能力。
    (4)提升工程化编程、调试与文档撰写能力。
    三、需求分析(核心章节)
    3.1 系统运行环境
    (1)操作系统:Linux / Windows。
    (2)开发语言:Python 3.x。
    (3)Web 框架:Flask。
    (4)系统形式:WAF 中间层 + 示例 Web 应用。
    3.2 功能需分析
    3.2.1 HTTP 请求拦截模块
    系统应对进入 Web 应用的所有 HTTP 请求进行统一拦截与分析,主要获取以下信息:
    (1)请求方法(GET / POST)。
    (2)请求 URL 路径。
    (3)请求参数(URL 参数 / 表单参数)。
    (4)请求头信息(如 User-Agent)。
    3.2.2 攻击特征检测模块(规则引擎)
    系统采用基于规则的检测方式,对请求内容进行分析,检测是否存在以下常见攻击
    特征。
    (1)SQL 注入检测
    可检测的典型特征包括但不限于:
    or 1=1
    union select
    sleep(
    '–
    (2)XSS 攻击检测
    可检测的典型特征包括:
    < script>
  • 12 -
    智能网联汽车学院课程设计指导书
  • 13 -
    οnerrοr=
    alert(
    (3)命令注入检测(选做)
    可检测的典型特征包括:
    ;
    &&
    |
    $( )
    (4)路径遍历检测(选做)
    可检测的典型特征包括:
    …/
    /etc/passwd
    3.2.3 请求控制模块
    系统根据检测结果,对请求进行处理:
    (1)对正常请求,允许访问,转交 Web 应用处理。
    (2)对恶意请求,阻断请求,返回统一错误提示页面。
    (3)记录安全事件日志。
    3.2.4 日志记录模块
    系统应对检测到的安全事件进行日志记录,日志内容至少包括:
    (1)攻击类型。
    (2)请求来源 IP。
    (3)请求路径。
    (4)命中规则。
    (5)发生时间。
    四、系统总体设计
    模块名称 功能说明
    请求拦截模块 统一接收并分析 HTTP 请求
    规则检测模块 基于规则判断请求是否异常
    请求控制模块 决定请求放行或拦截
    日志记录模块 记录安全事件信息
    智能网联汽车学院课程设计指导书
  • 14 -
    五、关键技术与实现方案
    5.1 技术选型
    (1)Flask:Web 服务框架。
    (2)re:正则表达式匹配。
    (3)time:时间记录。
    (4)functools:使用装饰器或中间件实现拦截。
    5.2 关键实现思路
    5.2.1 请求拦截实现思路
    利用 Flask 提供的 before_request 机制,在请求到达业务处理逻辑前进行安全检测,
    实现统一拦截。
    5.2.2 攻击检测实现思路
    (1)将请求参数统一转换为字符串。
    (2)依次匹配安全规则。
    (3)命中任一规则即判定为异常请求。
    六、测试方案与验证方法
    6.1 功能测试场景
    测试场景 预期结果
    正常访问 页面正常返回
    构造 SQL 注入参数 请求被拦截
    构造 XSS 参数 请求被拦截
    构造路径遍历参数 请求被拦截
    6.2 测试方法
    (1)使用浏览器直接访问。
    (2)手工构造测试参数。
    (3)对比系统输出与安全日志记录。
    七、结果分析与系统评价
    (1)系统对常见攻击的识别效果。
    (2)规则匹配造成的误报或漏报情况。
    (3)系统对 Web 应用性能的影响。
    智能网联汽车学院课程设计指导书
  • 15 -
    八、扩展设计(加分项)
    (1)安全规则配置文件化(JSON / YAML)。
    (2)IP 黑名单机制。
    (3)简单 Web 管理界面。
    (4)安全日志可视化展示。

实现

DVWA项目搭建
使用phpstudy小皮搭建,从github中下载DVWA项目下载Apache,MySQL启动项目。

监听DVWA

fromflaskimportFlask,request,Responseimportloggingimporturllib.parseimportrequests# 配置日志记录logging.basicConfig(level=logging.DEBUG,format='%(asctime)s - %(message)s',handlers=[logging.StreamHandler()])# 创建 Flask 应用实例app=Flask(__name__)req_session=requests.Session()BACKEND="http://dvwa:2222"# 后端的服务器地址LISTEN_PORT=9998# 监听的端口if__name__=="__main__":app.run(host="localhost",port=LISTEN_PORT,debug=True)

拦截规则编写

{"fatal":{"SQL Injection":["select\\s+.*\\s+from","union\\s+select","or\\s*1\\s*=\\s*1","sleep\\s*\\(","or\\s*['\"].*['\"]\\s*=\\s*['\"].*['\"]","'\\s*or\\s*'","\"\\s*or\\s*\"","--","#","and\\s*1\\s*=\\s*1","and\\s*['\"].*['\"]\\s*=\\s*['\"].*['\"]","'\\s*=\\s*'","information_schema","union.*select","order\\s+by\\s+\\d","group\\s+by\\s+\\d","having\\s+","benchmark\\s*\\(","waitfor\\s+delay","load_file\\s*\\(","into\\s+outfile","into\\s+dumpfile"],"XSS":["<script","javascript:","onerror\\s*=","onload\\s*=","onclick\\s*=","onmouseover\\s*=","onfocus\\s*=","onblur\\s*=","alert\\s*\\(","prompt\\s*\\(","confirm\\s*\\(","document\\.cookie","document\\.location","<img[^>]+onerror","<svg[^>]+onload","<iframe","<object","<embed","<body[^>]+onload"],"Command Injection":[";\\s*cat",";\\s*ls",";\\s*id",";\\s*whoami",";\\s*pwd","&&\\s*id","&&\\s*whoami","\\|\\|\\s*cat","\\|\\|\\s*ls","`[^`]+`","\\$\\([^)]+\\)","/etc/passwd","/etc/shadow","system\\s*\\(","exec\\s*\\(","shell_exec\\s*\\(","passthru\\s*\\(","eval\\s*\\(","&\\s*dir","&\\s*type","\\|\\s*type"],"CSRF":["<input[^>]+csrf","<meta[^>]+csrf"],"File Inclusion":["\\.\\.\\/","\\.\\. \\\\","/etc/passwd","/etc/shadow","/proc/self","php://input","php://filter","file://","data://","expect://"],"Brute Force":["too many attempts","login.*limit","incorrect.*password""too many attempts","login.*limit","incorrect.*password"]},"scoring":[["\\bselect\\b",3],["\\bunion\\b",2],["<script",5],["or\\s*['\"]",5],["system\\s*\\(",4],["exec\\s*\\(",4],["<iframe",4],["php://",3]]}

这些拦截规则旨在检测并防止常见的网络攻击,包括SQL注入、XSS攻击、命令注入、CSRF、文件包含和暴力破解。规则通过正则表达式匹配特定的恶意行为,例如SQL查询中的恶意关键字、脚本注入、系统命令的执行尝试、跨站请求伪造的标识符、非法文件路径的访问等。一旦检测到这些行为,系统会立即拦截并阻止攻击,保障应用安全。

防护演示










完整项目见附件,FOR FREE!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 3:47:03

利用UltraISO注册码最新版工具打包GLM-4.6V-Flash-WEB环境镜像

利用UltraISO注册码最新版工具打包GLM-4.6V-Flash-WEB环境镜像 在AI模型部署日益复杂的今天&#xff0c;一个常见的困境摆在开发者面前&#xff1a;明明在本地跑得通的多模态推理服务&#xff0c;换一台机器就因CUDA版本不匹配、Python依赖冲突或模型权重缺失而失败。尤其是面对…

作者头像 李华
网站建设 2026/4/3 7:25:40

GLM-4.6V-Flash-WEB模型在菜谱图像转文字中的实用案例

GLM-4.6V-Flash-WEB模型在菜谱图像转文字中的实用案例 在家庭厨房的抽屉里&#xff0c;常常藏着泛黄的手写菜谱&#xff1b;社交媒体上&#xff0c;美食博主分享的图文教程琳琅满目。这些信息本应被轻松复用&#xff0c;但现实是——我们很难快速提取出其中的关键内容。拍一张照…

作者头像 李华
网站建设 2026/4/11 8:32:03

GLM-4.6V-Flash-WEB模型能否识别军事装备类型?

GLM-4.6V-Flash-WEB模型能否识别军事装备类型&#xff1f; 在安防监控、情报分析和内容审核等场景中&#xff0c;对图像中的特定目标进行快速准确识别正变得越来越重要。尤其是涉及军事装备的视觉理解任务——比如从一张卫星图中判断某型飞行器是否为战略运输机&#xff0c;或通…

作者头像 李华
网站建设 2026/4/15 18:06:33

GLM-4.6V-Flash-WEB模型能否识别候鸟迁徙中途停歇时长?

GLM-4.6V-Flash-WEB 能否识别候鸟迁徙中途停歇时长&#xff1f; 在生态保护领域&#xff0c;候鸟迁徙研究长期面临一个核心难题&#xff1a;如何低成本、大范围地获取鸟类在迁徙途中停留时间的准确信息。传统手段依赖人工观测或昂贵的卫星追踪设备&#xff0c;不仅覆盖有限&…

作者头像 李华
网站建设 2026/4/12 17:11:33

GLM-4.6V-Flash-WEB模型在滑翔机起飞条件判断中的图像支持

GLM-4.6V-Flash-WEB模型在滑翔机起飞条件判断中的图像支持 在偏远山区的滑翔基地&#xff0c;清晨的薄雾还未散尽&#xff0c;飞行员站在跑道边凝视天空——云层高度够不够&#xff1f;风向是否有利&#xff1f;跑道上有没有昨晚降雨留下的积水&#xff1f;这些看似简单的观察&…

作者头像 李华