APP下载

网站信息安全问题及防护对策研究

2020-09-02陈淑红

网络空间安全 2020年7期

摘   要:在注重用户体验的Web 2.0时代,网站信息安全问题应该引起人们足够的重视。文章从SQL注入攻击、数据库的拖库和撞库风险、HTTP协议自身的安全缺陷、文件上传漏洞、跨站脚本攻击等多个方面,对网站可能存在的信息安全问题进行了详尽的分析,并针对各种信息安全问题给出了切实可行的防护对策,以期对加强网站信息安全工作起到抛砖引玉的作用。

关键词:网站信息安全;SQL注入攻击;撞库攻击;HTTPS;文件上传漏洞;跨站脚本攻击

中图分类号: TP3          文献标识码:A

Abstract: In such an era of WEB 2.0 that developers focus on user experience, people should pay more and more attention to website information security. This paper makes a detailed analysis of SQL injection attack, account credential enumeration attack, HTTP protocol security defects, file upload attack, XSS attack, etc. Finally, the feasible protective countermeasures are given for all kinds of information security issues, which hopes to strengthen website information security.

Key words: website information security; SQL injection attack; account credential enumeration attack; HTTPS; file upload attack; XSS attack

1 引言

隨着网络技术的迅猛发展,提供各种服务的网站如雨后春笋般地不断涌现。根据《2020年第45次中国互联网络发展状况统计报告》数据显示,截止2019年12月,我国网站数量为497万个,网页数量为2978亿个,网民规模达9.04亿,互联网应用呈现快速增长态势[1]。但是,也可以从报告中看到,境内被篡改的网站数量多达185,573个,被植入后门的网站数量高达84,850个。在注重用户体验的Web 2.0时代,网站信息安全问题应该引起人们足够的重视。网站信息安全既关乎9.04亿网民的切身利益,又关系到互联网生态的健康发展。

2 网站信息安全问题分析

2.1 SQL注入攻击

SQL注入攻击是目前危害最严重的Web网站攻击方式之一,通过把SQL命令插入到用户输入参数中,当服务器程序将用户输入参数直接作为查询条件,并拼接SQL语句向数据库查询返回结果时,攻击者便可以欺骗服务端进行恶意操作[2]。例如,用户在登录页面提交用户名和密码口令供服务器验证时,正常的SQL查询语句应该是:

sqlQuery = "SELECT * FROM users WHERE name = '" + userName + "' and pwd = '"+ passWord +"';"

如果攻击者将用户名和密码分别设为userName = "1' OR '1'='1"和passWord = "1' OR '1'='1",那么实际执行的SQL查询语句则变为:

sqlQuery = "SELECT * FROM users WHERE name = '1' OR '1'='1' and pwd = '1' OR '1'='1';"

可以看到查询判断条件恒为真,从而绕过系统检测达到欺骗目的。SQL注入攻击分为:基于报错的SQL注入、联合查询SQL注入、堆叠查询SQL注入、基于布尔的SQL盲注、基于时间的SQL盲注等。

一旦SQL注入成功,攻击者便可以窃取、篡改或删除网站数据,甚至拿下WebShell,对站点服务器拥有绝对的控制权,其破坏力不可小觑。

2.2 网站数据库遭遇拖库和撞库风险

所谓拖库是指网站遭到入侵后,黑客将该网站数据库里的用户账号和密码等敏感信息导出并存放到网上供人下载,而撞库是指黑客通过收集大量已泄露的用户账号和密码,将其生成对应的字典表,用它尝试批量登录其他网站[3]。

震惊业界的CSDN“拖库”事件中,有600万个注册用户的电子信箱账户和密码等信息被泄露,之后多家著名网站的用户信息被上传到网络供用户下载。很多用户习惯在不同的网站使用相同的电子信箱账号和密码,因此如果在一家网站服务器上的信息被黑客攻破,该用户在其他网站的个人真实财产和网上虚拟财产也同样面临巨大风险。

如果网站数据库存储的用户信息未经数据脱敏[4]处理,那么它被拖库和撞库的风险极大,并且撞库攻击的成本和技术门槛都非常低。

2.3 HTTP协议自身的安全缺陷

HTTP缺省工作在TCP协议的80端口,用户访问网站http://打头的都是标准HTTP服务,HTTP所封装的信息是明文传送的,客户端和服务器端都无法验证对方的身份,通过抓包工具可以获取传输信息的内容。

如图1所示,以POST方式向服务器提交用户名和保密码,利用Chrome浏览器自带的抓包工具,可以很方便地获取到用户提交的登录数据。可以看到用户的敏感数据并未加密,而是采用明文传输。

由于HTTP协议缺乏必要的认证机制,可以通过截获HTTP POST请求包来伪造响应包的信息,接管交互会话,以达到会话劫持和内容窃听、篡改的目的[5]。

2.4 文件上传漏洞

文件上传漏洞[6]是指系统程序没有对上传权限做出合理判断,或者没有对上传的文件后缀及文件类型做严格的限制,导致攻击者可以上传含有恶意脚本的图片文件,甚至是动态网页文件,从而为攻击者获取网站后门(即WebShell)创造了便利条件。

攻击者将后门文件与服务器正常文件混在一起,使用浏览器像访问正常网页一样来访问这些后门,服务器中不会留下系统日志,使得WebShell具有较高的隐蔽性。

恶意文件可以被上传的原因是多方面的:对上传的文件类型没有做出严格的检查,攻击者巧妙的利用服务器端对%00后面字符都截断的特点,将恶意文件重名为x.asp%00x.jpg,从而骗过上传类型的检测,将x.asp文件成功上传至服务器;使用了含有上传漏洞的第三方插件;对上传文件后缀名的白名单(或黑名单)设置不当,遗漏部分扩展名等。

2.5 跨站脚本攻击

跨站脚本(XSS)[7]是在Web应用程序中发现的最为普遍的漏洞之一,由于攻击的对象是Web应用的其他用户,而不是Web应用程序本身和其所在的服务器,往往被系统开发者和管理员忽视。例如,本文设计一个收集用户名参数的页面sample.aspx,其主要代码为:

<%string strUserName = Request["user"];%>

<%=strUserName%>

攻击者可以构造一个恶意的URL:http://域名/sample.aspx? user=

攻击者把此恶意URL发送给想要攻击的用户,当被攻击用户访问此URL时,则会出现如图2所示的结果。

不难发现,URL的JavaScript语句在被攻击者的浏览器中执行了。接下来攻击者可以利用这个权限做很多事情,比如盗取用户Cookie数据、修改用户设置、窃取用户账户、页面弹窗钓鱼、监听键盘事件等。

3 网站信息安全防护对策

3.1 利用字符过滤、存储过程、参数化SQL语句等方式避免SQL注入

要做好预防SQL注入,最有效的方法是在程序中做好用户提交数据的合法性验证,对用户输入的敏感SQL字符(如insert、update、joins、delete、union、group、drop、exec、master、truncate、declare、create、\\、'、load_file、outfile等)进行过滤处理。

此外,可以将所有的SQL语句都存放在存储过程中,这样不但可以避免SQL注入,还能提高一些数据库的查询性能。其缺点是不同的表有不同的查询条件,需要编写大量的存储过程。因此,还可以用参数化SQL语句,DBMS在执行时,先对SQL语句进行编译,把参数作为查询的一部分,而非执行的命令,从而可以有效地避免SQL注入。ASP.NET中的一条标准的参数化SQL语句参考为:

SqlCommand cmd = new SqlCommand(“SELECT * FROM users WHERE name = @userName and pwd = @passWord “);

cmd.Parameters.Add(new SqlParameter("@userName", SqlDbType.VarChar) { Value = NameValue });

cmd.Parameters.Add(new SqlParameter("@passWord", SqlDbType.VarChar) { Value = PasswordValue })。

3.2 對敏感信息进行数据脱敏后再存储

利用明文存储网站用户的密码等敏感信息显然是不妥的,即便网站没有被黑客攻击,也存在由于网站管理员操作不当等导致信息泄露的风险。如果将用户敏感信息用某种加密算法进行转化处理,使用户敏感数据变成无意义的字符序列,如表1所示,采用MD5对用户密码信息进行数据脱敏,即使用户信息被不小心泄露,也能将用户的损失降至最低。

需要注意的是,即便对用户敏感信息进行了数据脱敏也不能保证信息的绝对安全。如果用户设定的密码过于简单或者太有规律,那么攻击者可以通过试探的方式来暴力破解密码。因此,在用户设定密码的时候,要引导他们使用不同字符组合、具有一定长度、没有明显规律的强口令密码。

3.3部署HTTPS网站

为了解决HTTP协议的安全缺陷,越来越多的站点采用安全套接字层超文本传输协议(HTTPS)部署网站[8]。HTTPS是在HTTP的基础上加入了安全套接层(SSL协议)和安全传输层(TSL协议)。SSL协议主要通过数据加密技术保证通信过程中的安全及数据完整性,并依靠CA证书来验证服务器的身份。使用HTTPS方式与Web服务器通信的过程如图3所示。

HTTPS协议的特点:(1)需要到CA签发机构申请购买证书;(2)采用具有安全性的SSL加密传输协议传送信息;(3)不再使用HTTP的默认80端口,而使用443端口。

部署HTTPS网站不需要修改源程序代码,只需要从CA签发机构购买SSL证书安装、配置在服务器上即可。按验证的类别划分,SSL证书分为域名认证、组织机构认证和扩展认证三种。

为了解决HTTP和HTTPS混合内容访问的问题,可以在程序代码中添加JS脚本程序,用以自动判断当前请求的URL所使用的协议,并强制转换成HTTPS请求方式。JS脚本代码为:

var url = window.location.href;

if (url.indexOf("https")<0){

url = url.replace("http:", "https:")

window.location.replace(url);

}

3.4 对XSS攻击的防范

预防XSS攻击可以在客户端(浏览器)和Web服务器端进行。在客户端的防范工作主要是升级浏览器,更新漏洞补丁,采用插件对XSS进行检测并过滤。要做好Web服务器端XSS攻击的防范工作,通常需要做好四点。

(1)对所有用户提交的内容进行验证,这些内容包括URL、HTTP头、POST数据等,合理设定接收数据的长度、格式、范围,采用模式匹配的方法对数据进行JavaScript关键字检索和过滤。

(2)不要在页面中引用任何不可信的第三方JavaScript代码。例如,评论、分享、流量统计、文本编辑器等第三方JS插件代码,都可能被攻击者利用。

(3)对插入HTML标签的不可信数据进行HTML Entity编码。例如,对&、<、>、”、‘、/这6个字符进行HTML Entity编码,分别对应转换为&、<、>、"、'、/。

(4)对需要用户Cookie的Web应用,采用HttpOnly属性的Cookie,防止攻击者篡改、盗取用户Cookie信息。

3.5其他必要措施

(1)采用全站静态化存储文档,不但可以提高网站的响应速度,而且还能降低被XSS攻击的风险。

(2)对代码进行严格审计,杜绝文件上传漏洞。

(3)合理分配服务器文件的读写权限,禁用文件上传目录的运行权限。

(4)定期做好网站数据库备份,定期检查网站LOG日志,发现异常情况及时查找修补漏洞。

(5)自定义错误信息页,将customErrors的mode属性设为On或者RemoteOnly,避免暴露程序代码或数据库表的细节。

4 结束语

信息技术的不断革新让网站朝着多元化、专业化、个性化的方向发展,也让网站面临各种前所未有的挑战。网站信息安全工作是一项长期性、基础性、科学性的系统工程。只要人们加强对网站信息安全工作的重视,在技术层面和管理层面做一些必要的防范措施,就可以有效地保障网站数据的安全。本文对网站信息安全可能存在的各种问题进行了详细系统的分析,阐述其原理,并针对各种信息安全问题给出了切实可行的防范对策,以期对加强网站信息安全工作起到抛砖引玉的作用。

参考文献

[1] 中國互联网络信息中心. 《CNNIC:2020年第45次中国互联网络发展状况统计报告》[EB/OL]. http://www.199it.com/archives/1041487.html.

[2] 刘岳,盛杰,尹成语. Web应用中SQL注入攻击与防御策略研究[J].网络安全技术与应用, 2017(4):109-111.

[3] 黄嵩.拖库撞库对数据安全的威胁及应对[J].信息与电脑(理论版), 2015(22):131-132.

[4] 姬鸣扬,李林森,李建华. P2P网贷用户数据脱敏技术研究[J].通信技术, 2017,50(2):321-327.

[5] 王鹏,季明,梅强,等.交换式网络下HTTP会话的劫持研究及其对策[J].计算机工程, 2007,33(5):135-137.

[6] 韦鲲鹏,葛志辉,杨波. PHP Web 应用程序上传漏洞的攻防研究[J].信息网络安全, 2015(10):53-60.

[7] 左丹丹,王丹,付利华.一种XSS漏洞检测方法的设计与实现[J].计算机应用与软件, 2016(07):278-281.

[8] 张宝玉.浅析HTTPS协议的原理及应用[J].网络安全技术与应用, 2016 (7):36-39.

[9] 赵桦筝,黄元浦,等.面向DDoS入侵检测的报文特征提取方法[J].网络空间安全,2020(3):24-29.

[10] 王杨,蒋巍,等.高安全需求的Web服务器群主动防御体系研究[J].网络空间安全,2019(6):1-4.

作者简介:

陈淑红(1987-),男,山东日照人,河北工程大学,硕士,山东省日照市莒县文心高级中学,中学二级教师;主要研究方向和关注领域:教育教学信息化、模式识别。