龙岩市网站建设_网站建设公司_PHP_seo优化
2026/1/5 19:43:29 网站建设 项目流程

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

课程设计四 基于 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!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询