当前位置:首页 期刊杂志

高校Web应用开发面临的安全隐患及应对策略的研究

时间:2024-05-04

姜家涛

(1.贵州师范大学贵州省信息与计算科学重点实验室,贵州贵阳 550001;2.贵州师范大学网络与信息中心,贵州贵阳 550001)

0 引言

高校信息中心作为信息管理和服务部门,经常遇到师生就业务工作提出各种快速开发应用需求,期待信息部门能够提供个性化需求,快速开发服务支持。除了采购集成商提供的大型软件平台,信息中心必须具有一定研发能力,能够灵活地开发一些微小的轻应用程序。作为非专业的开发者,高校信息部门程序开发者往往过于关注业务功能而忽略安全隐患,如跨站请求伪造攻击、开放式重定向攻击、跨站脚本攻击和网站页面篡改等。随着网络安全法、数据安全法和个人隐私信息保护法的出台,Web应用安全成为闭环中最重要一个环节,是保障Web服务和数据安全的必须工作。为了解决Web应用中可能存在的安全问题,文章梳理了开发中各种安全隐患点,深入研究其攻击方式,并提出相应安全应对策略,然后结合AspnetCore开发平台实现策略方法,最后分析了某高校网站受到的安全攻击状态,并展示应用了提出的安全策略后防护结果。

1 Web身份验证

Web应用保护受限制资源基于访问控制策略[1-2],其中身份验证携带凭据实现方式主要包括Cookie 身份验证和令牌身份验证,身份凭据是安全攻击主要关注点,不同身份验证方式可能引发不同安全隐患。

1.1 Cookie身份验证

Cookie 身份验证[3]指当用户使用用户名和密码进行身份验证时,他们将获得一个令牌,其中包含一个可用于身份验证和授权的验证票证。令牌存储为Cookie,随客户端发出的每个请求一起发送。生成并验证Cookie是否有Cookie身份验证中间件执行,中间件将用户主体序列化为加密的Cookie。后续请求中,中间件将验证Cookie,重新创建主体并将该主体分配填充到User属性。

1.2 基于令牌身份验证

令牌身份验证[4]常用作App 和H5 客户端身份验证。当用户通过身份验证时,他们将获得一个令牌。令牌包含声明形式的用户信息,或是将应用指向应用维护自我状态的引用令牌。当用户尝试访问需要身份验证的资源时,令牌将以持有者令牌的形式通过额外的授权标头发送给应用服务器。基于令牌身份验证是应用无状态的,后续的每个请求都必须携带令牌以进行服务器验证。其次,令牌是未加密的,已编码的。在服务器身份验证时,须对令牌进行解码以访问其信息,并刷新过期日期。若在后续请求中持续需要令牌,只需将令牌存储在浏览器的本地存储中即可。值得注意的是,令牌的存储方式的选择也可能引起“跨网站请求伪造”安全隐患。

2 网站面临的安全攻击隐患

2.1 跨网站请求伪造(XSRF或CSRF)

跨网站请求(CSRF)[5-6]是一种针对Web 托管应用的工具,恶意Web应用凭此也可以影响客户端浏览器与信任该浏览器的Web 应用之间的交互。Web 浏览器会随着对网站的每个请求自动发送某些类型的身份验证令牌,利用用户以前经过身份验证的会话展开攻击。

2.2 开放式重定向攻击

开放式重定向攻击发生场景为:当用户访问需要身份验证的资源时,Web应用程序会将用户重定向到登录页面。重定向通常包含一个returnUrl 和querystring参数,以便用户在登录后可以返回到最初请求的地址。当用户验证身份通过后,网页将被重新定向到请求的地址URL。由于目标URL是在请求querystring中指定的,因此恶意用户可能会篡改querystring。篡改querystring 中URL 参数可以将用户重定向到外部的恶意站点,可能是境外赌博和黄色网站,甚至是钓鱼网站,给用户带来巨大损失,给高校造成负面影响。

2.3 跨站脚本(XSS)攻击

跨站脚本(XSS)[7]是一种安全漏洞,攻击者利用此漏洞将客户端脚本置于网页中。当其他用户加载受影响的页面时,攻击者的脚本便会运行,从而可盗取cookie和会话令牌、通过DOM操作更改网页内容或将浏览器重定向到其他网页。XSS 漏洞常发生在应用程序接受用户输入并将它输出到网页而不进行验证、编码或转义的情况。

2.4 网页非法篡改攻击

网页非法篡改是黑客攻入系统,对网站页面内容进行篡改。通常会植入后门、网页挂马、注入黑链暗链等,甚至于恶意宣扬政治意识形态和宗教信仰信息,这对于高校、事业单位影响尤其恶劣。

网页非法篡改主要有以下形式[8]:

1)Web Shell 攻击:通过上传木马、植入后门文件等方式获取服务器权限,上传修改篡改网页。

2) SQL 注入:利用SQL 语句漏洞篡改数据库,对动态网页数据非法修改。

3) 利用软件或操作系统漏洞:通过漏洞获得权限,达到上传篡改网页目标。

3 Web应用安全策略及实现

针对以上Web应用存在的安全攻击隐患,文章设计了启用HTTPS、Web 访问控制(验证授权机制)、防跨站请求伪造攻击、防跨站脚本攻击、防开放式重定向攻击和防网页非法篡改策略,并基于AspnetCore Web 应用开发平台实现,保证Web 应用的基本安全。图1为Web 应用开发安全防护架构。

图1 Web应用开发的安全防护架构

3.1 开启HTTPS

为了保护敏感数据在网络传输中的传输安全,Web 系统必须启用安全超文本传输协议(Hypertext Transfer Protocol over SSL,HTTPS)[9],即经过SSL 加密后的HTTP。HTTPS 使用SSL 在发送方将原始数据进行加密,然后在接收方进行解密,加密和解密需要发送方和接收方通过交换共享密码实现,数据很难被截获和解密。HTTPS 是Internet 通信安全协议,可以保证网络通信的Client/Server 之间防窃听、防消息篡改及消息伪造的安全通信。

Web 开发中AspnetCore 平台使用HTTPS 非常简单:在Startup 类中配置UseHttpsRediction 中间件将HTTP请求重定向到HTTPS,配置网络端口443。

3.2 阻止跨站点请求伪造攻击

阻止跨站点请求伪造可以从用户与Web 应用软件两个方面着手。用户可以采用以下预防措施来防范:用完Web 应用程序后习惯退出登录,定期清理浏览器cookie。但从根本上解决CSRF 漏洞要从Web 应用开发着手,将数据保护实现防伪造。

3.3 阻止跨站脚本攻击

如前所述,跨站脚本攻击通常是客户端网页展示了不受信任的数据,简单地嵌入在HTML元素、HTML属性和JavaScript 中,直接地接收URL 请求传来的数据。为了阻止跨站脚本(XSS)攻击,在开发中应该进行以下工作预防避免引入XSS:

1)切勿将不受信任的数据置于HTML输入中,除非按照后续其他方法进行处理。不受信任的数据是指可能由攻击者控制的任何数据、HTML窗体输入、查询字符串、HTTP 标头,甚至是源自数据库的数据,因为即使攻击者无法破坏应用程序,也可能破坏数据库。

2)将不受信任的数据置于HTML元素中之前,确保其经过HTML编码。

3)将不受信任的数据置于HTML属性中之前,确保其经过HTML编码。

4) 将不受信任的数据置于JavaScript 中之前,将数据置于运行时检索其内容的HTML元素中。

5)将不受信任的数据置于URL 查询字符串中之前,确保其经过URL编码。

3.4 阻止开放式重定向攻击

由于开放式重定向功能由URL 携带不安全数据造成,在开发过程中丢弃这部分数据,将所有用户提供的数据视为不可信、不再利用。如果程序的确需要基于URL内容重定向用户页面,也必须确保重定向的页面是本地页面。

3.5 Web应用安全防护结果

表1为作者所在高校基于日志过滤器得到的部分历史网络攻击记录,反映了高校Web对外窗口受到安全攻击是常态化状况。攻击类型很多,其中SQL注入和跨站脚本攻击占据大部分。攻击来源广,既有国内恶意攻击,也有来自海外IP的渗透。通过在Web开发中一一实现上述相关安全策略,做好入侵防护,可以有效拦截渗透攻击,保证Web应用安全。

表1 某高校Web系统网络入侵攻击记录表

4 结论

高校信息系统开发过程中面临跨站请求伪造攻击、开放式重定向攻击、跨站脚本攻击和网站页面篡改等安全隐患,系统开发者不可忽视。本文梳理了Web开发过程中可能存在的安全隐患点,分析了Web攻击特点、攻击手段,并针对每种可能的攻击方式,制定了相应的安全应对策略。最后结合AspnetCore 开发平台对提出的方法策略进行实践,并在作者所在高校的网站中应用测试,有效地堵住以上系统安全漏洞,展示了较好的效果,从开发角度保证了Web 系统的安全。当然,Web 系统的攻击方式形形色色,无孔不入,我们不仅要堵住攻击,还要考虑预防,后期将考虑利用AI手段预测预警。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!