# WEB应用防火墙
## WAF核心引擎函数模块
### main
- main()
调用入口
- handle_response(client_socket)
接受客户端请求,并传入filter中进行过滤判别,然后传入response里接受真实服务器请求
### config
配置模块
- 调剂级别及部署方式状态
- 动作状态码
- socket配置
- 代理服务器及真实服务器地址和端口
- 数据库信息
- 请求处理正则
### set_config
防火墙配置信息的操作
- write_conf()
初始化操作
- get_waf_status()
获得防火墙状态
- set_waf_status(status)
设置防火墙状态,注意传参必须是字符串
- get_real_host()
获得内容服务器的ip
- set_real_host(host)
设置内容服务器ip
- get_real_port()
获得内容服务器端口
- set_real_port(port)
设置内容服务器端口
- get_proxy_host()
获得代理服务器ip,即防火墙所部署的防火墙ip
- set_proxy_host(host)
设置防火墙代理服务器ip
- get_proxy_port()
获得防火墙代理服务器端口
- set_proxy_port(port)
设置防火墙代理服务器端口
- get_service_name()
获得服务器名称,指HTTP或HTTPS
- set_service_name(name)
设置服务器名称
- get_database_ip()
获得防火墙数据库的ip
- ser_database_ip(ip)
设置防火墙数据库的ip
- get_database_login_info()
获得防火墙数据库的登录用户名密码,返回以列表形式
- set_databse_login_info(user,passwd)
设置防火墙数据库的登录用户名密码
- get_database_name()
获得防火墙数据库库名
- set_database_name(name)
设置防火墙数据库的库名
- get_cc_minutes()
获得cc攻击判断时间的范围,即获取几分钟内
- set_cc_minutes(minutes)
设置分钟
- get_cc_times()
获取cc攻击判断时最大请求数
- set_cc_times(times)
设置最大请求数,必须传字符串
### filer
过滤模块
- do_filter(client_socket,client_req)
filter模块对外调用函数
- get_message(client_socket,client_req)
过滤请求信息,返回关键信息json
- is_pass(regular,message)
传入正则表达式regular和数据message
判断数据是否匹配正则表达式,匹配则代表有非法信息,那么返回False,反之返回True
- is_prohibit(ip,message):
传入ip,判断该ip是否被禁止访问
- do_url(message,url)
传入信息,和url,判断是否有敏感目录文件等
- do_get(message,url)
判断get请求是否有非法信息
- do_post(message,body)
处理post请求中的post信息,有几个分支,一个处理登录情况,一个处理xss,一个处理命令执行
- do_post_login(message,data,path)
对post类型的sql注入进行拦截判断
- do_post_xss(message,data,path)
对post类型的xss进行判断拦截 存储型XSS
- do_post_type(message,data,path)
对文件上传时的文件类型进行白名单匹配
- do_post_type_suffix(message,data,path)
对文件上传时的文件后缀进行黑名单匹配
- do_post_exe(message,data,path)
命令执行特殊字符或敏感字符过滤
- is_illegal_ask(message,minutes,times)
判断是否多次非法请求,minutes表示判断多长时间内的,以分钟为单位;times表示最大请求次数
### response
根据动作选择是否向真实服务器发送请求,并获取真实服务器请求转发给客户
- do_response(client_socket,proxy_req,action)
response模块对外主要调用函数,跟据action选择放行拦截还是其他
- response_pass(client_socket,client_req)
放行动作,向真实服务器发送请求,并获取真实服务器response再转发给客户
- response_block(client_socket,message)
拦截动作,丢弃用户请求,返回拦截警告
- response_prohibit(client_socket,message)
禁止访问,丢弃用户请求,返回禁止访问警告
### waf_db
数据库操作模块
类DataBase
init 连接数据库
del 关闭数据库
get_db() 连接数据库
execute(sql) 执行sql语句,返回cursor
select_rules(table) 传入表名,查询规则数据,返回数据,字典形式
select_logs(table)传入表名,查询日志数据,返回字典形式
add_rules(table,info)传入表明,数据字典,插入规则信息
add_logs(table,info),传入表明,日志信息(json形式)插入日志
delete_info(table,id),传入表名,id,删除 表中信息,
get_rules_url() 查询url规则
get_rules_get() 查询get规则
get_rules_post() 查询post规则
add_rules_url(info) 插入url规则,字典形式
add_rules_get(info)插入get规则,字典形式
add_rules_post(info)插入post规则,字典形式
delete_rules_url(id) 根据id删除url规则
delete_rules_get(id)根据id删除get规则
delete_rules_post(id)根据id删除post规则
get_logs_waf()获得防火墙日志信息,返回字典
add_logs_waf(info)传入日志信息,字典形式,插入
delete_logs_waf(id)根据id删除日志信息
get_prohibit_ip() 得到被删除的ip信息
delete_prohibit_ip(id)根据id删除被封禁的ip信息,相当于解封
add_prohibit_ip(ip,date) 添加被封禁的ip信息,相当于封禁,传进去ip和被封时间
change_prohibit_status(id,status) 修改ip封禁的状态
### load_rules
加载规则模块
- load_rules()
把数据库中的规则加载到本地,总对外调用函数
- write_files(name,data)
写文件操作,文件地址是name,要写入数据是data
- load_rules_url(db,path)
加载数据库中url规则数据到本地文件中,db指数据库句柄,path,文件地址
- load_rules_get(db,path)
加载数据库中get规则数据到本地文件中,db指数据库句柄,path,文件地址
- load_rules_post(db,path)
加载数据库中post规则数据到本地文件中,db指数据库句柄,path,文件地址
- load_prohibit_ip(db,path)
加载数据库中被封禁的ip信息到本地,db指数据库句柄,path,文件地址
### utils
插件小工具模块
- log(message,level=0)
颜色输出,根据level级别选择输出类型
- ip_info(ip)
通过调用API接口,获取相应IP地址的回应状态 国家 省 市 是否使用代理 ip等信息
返回字典
- change_to_json(data)
将数据dic转换成json,返回json数据
- change_to_dict(data)
将json转换成字典,返回字典
### logs
记录日志信息
- ip_is_database(ip)
判断传进来的ip是否在数据库日志中有记录
- add_pass_logs(message)
添加正常放行日志
- add_block_logs(message,action,type,s)
添加拦截日志
message指传过来的ip、地址、时间、端口等基本信息
action表示描述信息
type表示非法请求的行为类别
s表示注入点的注入信息,即非法信息
- add_error_logs(error,exception)
添加程序运行过程中的错误日志
error表示错误描述
exception表示异常信息
## 前端页面设计
### main
flask主函数
- page_404(e)
404界面
- index()
主页面
- logs_pass()
返回放行日志的html页面及放行日志
- logs_block()
返回拦截日志的html页面及拦截日志
- logs_error()
返回程序运行错误日志的html页面及错误日志
- url_rules_manage()
返回url规则html页面
- get_rules_manage()
返回get规则的html页面
- post_rules_manage()
返回post规则的html页面
- tansfer_url_data()
POST 返回url规则数据
- transfer_get_data()
POST 返回get规则数据
- transfer_post_data()
POST 返回post规则数据
- change_status_url()
修改url规则状态:开还是关 POST传输
- change_status_get()
修get规则状态:开还是关 POST传输
- change_status_post()
修改post规则状态:开还是关 POST传
没有合适的资源?快使用搜索试试~ 我知道了~
基于Python+Flask开发的Web应用防火墙.zip
共78个文件
html:21个
js:19个
py:15个
需积分: 0 1 下载量 81 浏览量
2023-09-28
16:04:24
上传
评论
收藏 1.01MB ZIP 举报
温馨提示
基于Python+Flask开发的Web应用防火墙.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于Python+Flask开发的Web应用防火墙.zip (78个子文件)
LZQWAF-main
LICENSE 1KB
.idea
Simple-WAF.iml 324B
dbnavigator.xml 26KB
misc.xml 299B
inspectionProfiles
Project_Default.xml 444B
profiles_settings.xml 174B
modules.xml 272B
.gitignore 47B
WAF_Front
__init__.py 164B
front_db.py 6KB
main.py 25KB
templates
service_set.html 11KB
prohibit_page.html 933B
get_rules_manage.html 12KB
logs_pass.html 10KB
rank_attack.html 8KB
500.html 2KB
ip_prohibit.html 11KB
database_set.html 11KB
post_rules_manage.html 12KB
logs_block.html 10KB
rank_type.html 8KB
logs_error.html 9KB
iex.html 41KB
404.html 2KB
url_rules_manage.html 12KB
intercept_page.html 934B
illegal_ask_set.html 10KB
index.html 10KB
logs_user_operate.html 9KB
401.html 2KB
rank_url.html 8KB
analysis.py 2KB
static
assets
demo
chart-bar-demo.js 1KB
datatables-demo.js 103B
chart-pie-demo.js 597B
chart-area-demo.js 1KB
img
dppng.png 4KB
error-404-monochrome.svg 6KB
tb.ico 66KB
prohibit_ip.jpg 13KB
dp.png 16KB
dp.jpg 18KB
js
jquery.easyui.min.js 463KB
datatables-simple-demo.js 312B
logs_pass.js 988B
illegal_ask_set.js 6KB
echarts_demo.js 6KB
ip_prohibit.js 14KB
echarts.js 3.16MB
bootstrap.bundle.min.js 76KB
rules_manage_url.js 15KB
index.js 7KB
service_set.js 7KB
rules_manage_post.js 15KB
database_set.js 7KB
scripts.js 976B
rules_manage_get.js 15KB
css
styles.css 217KB
WAF_Engine
utils.py 3KB
__init__.py 0B
load_rules.py 2KB
logs.py 3KB
waf_db.py 13KB
main.py 3KB
response.py 4KB
rules
rules_get.json 1KB
prohibit_ip.json 320B
rules_post.json 1KB
rules_url.json 155B
WAF_CONF 265B
set_config.py 8KB
config.py 3KB
filter.py 14KB
.gitignore 2KB
test.py 524B
README.md 11KB
rules.md 2KB
共 78 条
- 1
资源评论
天天501
- 粉丝: 596
- 资源: 4666
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功