news 2026/4/22 19:39:40

基于 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/23 17:52:38

GLM-4.6V-Flash-WEB模型能否识别赛车比赛中的车辆品牌?

GLM-4.6V-Flash-WEB模型能否识别赛车比赛中的车辆品牌&#xff1f; 在一场高速飞驰的F1比赛中&#xff0c;镜头扫过十几辆涂装各异的赛车——银色的梅赛德斯、鲜红的法拉利、深蓝的阿尔派。如果此时截取一帧画面&#xff0c;普通人或许能认出几个显眼的品牌&#xff0c;但要让机…

作者头像 李华
网站建设 2026/4/22 13:18:44

西安交通大学软件学院——分布式系统练习题(填空 判断)

二、填空题1、一个分布式系统就是一组独立的计算机的集合&#xff0c;但是这组计算机在用户看来是一个整体的。 2、分布式系统的可扩展性包括 大小规模的 可扩展性、 地理上的 可扩展性和 管理上的 可扩展性三个层面。3、分布式对象是指 实现对象的接口 与 …

作者头像 李华
网站建设 2026/4/23 9:53:32

接口测试是什么?为什么要做接口测试?

前言接口测试现在已经成为测试工程师的必备技能我是常常安利身边的工程师一定要精通接口测试&#xff0c;注意&#xff0c;这里是精通&#xff0c;不是知道或了解。原因很简单&#xff0c;你点开招聘网站上各大公司对于测试工程师的要求&#xff0c;就能看到接口测试已经成为测…

作者头像 李华
网站建设 2026/4/23 11:21:55

GLM-4.6V-Flash-WEB模型在漂流探险安全预警中的图像识别

GLM-4.6V-Flash-WEB模型在漂流探险安全预警中的图像识别 在山地峡谷间穿行的漂流河道上&#xff0c;水流湍急、地形复杂&#xff0c;一个疏忽就可能酿成严重事故。而传统监控系统大多只能“看见”画面&#xff0c;却无法“理解”危险——直到现在。 随着多模态大模型技术的突…

作者头像 李华
网站建设 2026/4/23 12:13:43

web自动化测试——pytest快速上手

1. pytest pytest是一个非常成熟的全功能的Python测试框架&#xff0c;主要有以下几个特点&#xff1a; 简单灵活&#xff0c;容易上手支持参数化能够支持简单的单元测试和复杂的功能测试&#xff0c;还可以用来做selenium/appnium等自动化测试、接口自动化测试&#xff08;p…

作者头像 李华
网站建设 2026/4/23 12:15:31

基于GLM-4.6V-Flash-WEB的图文理解项目实践全流程

基于GLM-4.6V-Flash-WEB的图文理解项目实践全流程 在智能客服对话框里上传一张模糊的产品故障截图&#xff0c;系统不到半秒就返回&#xff1a;“图中红圈标注的E01错误码通常由电源接触不良引起&#xff0c;请尝试重新插拔电源线。”——这不再是科幻场景&#xff0c;而是今天…

作者头像 李华