一、系统背景
随着信息技术的飞速发展,Web应用程序成为现代社会中信息传递、数据处理和业务交互的重要载体。然而,技术的快速发展也带来了安全隐患。Web应用程序的复杂性和多样性使得其容易受到各种攻击,包括但不限于SQL注入、跨站脚本攻击(XSS)等。这些漏洞的产生往往源于编程错误、设计缺陷或者对安全措施的忽视。
二、功能结构
系统主要分为两个模块,爬虫模块和Web应用程序漏洞展示模块,整个系统实现主要使用后端的Web框架Flask、Jinjia2模板引擎、前端的Layui框架和用于绘制图表的Echarts库等。数据库统一使用MySQL。功能结构图如下图所示:
2-1、网络爬虫
爬取全球各个国家的高校排名及专业信息并保存至MySQL数据库。爬取的数据需要保证准确性和完整性,同时从网站爬取的数据通常需要进行清洗和处理,以消除不一致之处。这包括去除重复数据、处理缺失值、转换数据格式等。
2-2、开发国家高校排行网站
通过将爬取的高校排名数据转换处理之后,开发一个用于展示这些数据的网站,主要包括国家高校排名切换、国家高校排名分页查询、根据高校名称搜索以及发表评论等功能。
2-3、暴露SQL注入漏洞
在系统中暴露一个SQL注入漏洞,用于后续修复系统演示。系统需支持用户输入作为搜索条件,并直接将其拼接到SQL查询中,以实现动态的数据检索功能。
2-4、暴露XSS脚本攻击漏洞
在系统中暴露一个XSS脚本攻击漏洞,用于后续修复系统演示。系统需支持用户输入内容,并直接展示在网页上,未对用户输入进行充分过滤和转义,可能导致跨站脚本攻击。
2-5、漏洞修复前后对比
展示修复漏洞前后网站的对比,并给出一个或多个漏洞解决的方案。SQL注入漏洞修复前:系统直接将用户输入拼接到SQL语句中,存在SQL注入风险。修复后:系统采用参数化查询或预编译语句,有效防止SQL注入,提高系统安全性。XSS脚本攻击漏洞修复前:系统未对用户输入进行适当过滤,存在XSS漏洞。修复后:系统对用户输入进行严格验证和转义,确保无XSS漏洞,提高系统安全性。
三、架构设计
使用Python语言的Web框架Flask提供后端接口,前端界面样式开发主要使用Layui框架,Layui提供了丰富的UI组件和简洁的API,使得开发者可以快速上手并快速构建出美观、易用的界面,Ajax用于异步请求后端接口数据,jQuery是比较流行的JavaScript工具库。数据存储方面主要采用MySQL,MySQL运行速度快、体积小,非常适合本系统这种中小型系统。爬虫使用requests工具获取网站数据,通过BeautifulSoup解析数据。
四、系统实现
4-1、爬虫
爬取网站:全球11,000多所大学的大学排名
核心代码:
# 爬取国家信息
def get_nation_info():
html = get_html(BASE_URL, "utf-8")
# 数据处理
soup = BeautifulSoup(html, "html.parser")
ul = soup.find("ul", id="countrySelect")
lis = ul.find_all("li")
res = []
for li in lis:
if li.a is not None:
n_name = li.a['data-xco']
e_name = li.a['data-co']
url = li.a['data-url']
# 跳转详情页获取图片
detail_html = get_html(url, "utf-8")
detail_soup = BeautifulSoup(detail_html, "html.parser")
hero_img_dom = detail_soup.find("img", id="ugHeroImg")
hero_img_url = ""
if hero_img_dom is not None:
hero_img_url = hero_img_dom['src']
map_img_dom = detail_soup.find("img", class_="gmapStaticMapImg")
map_img_url = ""
if map_img_dom is not None:
map_img_url = map_img_dom['data-src']
nation_info = Nation(n_name, e_name, url, hero_img_url, map_img_url)
save_nation_info(nation_info) # 将国家信息保存到数据库
print(nation_info.to_json())
res.append(nation_info.to_json())
return res
4-2、高校排名网站首页
4-3、漏洞检测
SQL注入漏洞修复前
SQL注入漏洞修复后
4-4、漏洞复现
4-4-1、SQL注入漏洞
通过搜索栏填入【%" or “1%” = "1】以达到绕过权限校验查询所有高校数据
修复后
4-4-2、XSS脚本攻击漏洞
用户发表评论插入恶意脚本【< a href=“javascript:alert(‘加载中…’);”>点我领取高考志愿填报指南 】,当评论列表渲染时加载该恶意脚本,其他用户点击时弹出恶意弹窗。
修复后
通过合法性校验和内容转义来避免XSS脚本攻击
五、总结
该网络爬虫与漏洞暴露的Web应用程序漏洞检测系统通过构建测试网站的方式,直观地展示了Web应用程序的潜在漏洞,并为使用用户展示漏洞修复前后的界面。该系统具有直观性、灵活性和实时反馈等优势,在Web应用程序的安全防护中发挥了重要作用。