APP下载

在线测试平台安全性问题与具体解决方案

2018-01-30张鸣华

电子技术与软件工程 2017年15期
关键词:程序设计

摘要:程序设计在线测试平台(简称OJ)是程序设计类课程训练、比赛、测试中支撑平台。由于它的开放性,存在着许多不安全的因素。本文探讨了OJ平台网页等方面存在的安全问题,以及防卫的措施。

【关键词】程序设计 在线测评 网页安全

在线测试平台是对网页提交的代码进行实时判断,并给出判断结果的平台。是学习程序设计、数据结构、算法分析等课程的支撑工具。目前,大多数的的院校都有自己的OJ平台。由于平台在网络上的开放性,因此存在着很多安全问题。

三明学院的的在线测试平台安装在Windows Server 2008的系统中,使用Tomcar开发,采用Mysql数据库。目前该系统不仅可以提供平时的在线测试功能,还可以处理作业统计、考试、竞赛等。这个系统自从使用以来经历了数不清的攻击,系统几次崩溃、几次重装。出现的问题不胜枚举。比如服务器被攻击、数据库被删除或修改、网页上的功能被去除、服务器内的信息被盗等等。下面对其中的一些攻击进行讨论。

1 SQL注入攻击

所谓SQL注入攻击,就是攻击者通过修改前端页面表单入参,增加额外的SQL元素来达到欺骗数据库服务器执行恶意SQL的一种攻击方式,就其本质而言,它利用的工具是SQL的语法,针对应用程序开发者在编程过中的漏洞,通过在应用程序预先定义好的SQL语句中追加恶意的SQL元素来达到攻击的目的。

SQL注入攻击是目前互联网最常见也是影响非常广泛的一种攻击手段,主要危害:

(1)数据库信息泄露:数据库敏感信息被窃取,比如用户密码等;

(2)网页被篡改:通过操纵数据库内容篡改网页显示;

(3)网站被挂马:修改数据库一些特定字段,嵌入网马链接,进行挂马攻击。

下面通过举例的方式来说明SQL注入攻击的原理。

假设我们有一个后台登录功能,正常要求输入用户名和密码才能够登录。然后处理登录的代码的逻辑大致如下:

(1)获取前端输入的参数用户名和密码,假设分别为jiaye和123456;

(2) 通过SQL“String sql=”select*from user where name=”+name+ "andpassword=""+password+""”来查询,如果结果存在说明用户名和密码正确,允许用户登录。

通过上面的邏辑,正常情况用户必须输入正确的账号和密码才能够登录。但是如果代码存在SQL注入漏洞,那么攻击者可以通过精心构造前端页面的入参,来达到及时输入错误的密码也能够登录。

比如用户名输入jiaye,密码这时输入“111'or name= 'jiaye”,那么登录后台拼接的SQL就变成“select 4 from user where name= 'jiaye'and password=111' or name= 'jiaye'”,这样就等于不需要验证密码即可登录了。

这里只是一个简单的例子,实际中,攻击者可以通过数据库中一些特殊的SQL语句,很容易的就可以获取数据库中的表结构、数据等。

通过上面的例子,大家应该对SQL注入原理及其危害有进一步的了解。那我们应该怎么避免在网站中产生SQL注入漏洞呢?

(1)通过对特殊字符做过滤,比如上面的例子中,通过对分号做转义即可避免被注入。但是极不推荐这种做法,所谓魔高一尺道高一丈,开发者很难考虑到所有的注入方式来过滤所有的特殊字符。

(2)通过预编译的方式来执行SQL,以java来说明,比如上面的例子中,我们把SQL修改为“String sql="select+ from userWherename=?and password=?””,然后逐个的设置参数并执行。通过预编译的方式来执行SQL是一种简单而有效的避免SQL注入的方法。

2 文件上传与下载漏洞

文件的上传与下载是一个非常常见的网站功能,但是如果处理得不合理,可能会给服务器带来很大的危险。

首先说说文件上传,如果不做任何限制,那么用户可以上传任意的文件到服务器。用户可能上传一些超大的文件到服务器,导致服务器磁盘被占满;更危险的是,用户可能上传一些病毒、木马文件到服务器上,然后通过其他漏洞直接执行这些上传的文件。

文件下载则应该控制好权限,使得用户只能下载服务器允许他下载的文件。比如我们有一个文件下载的URL: “/download.jsp?path=/download/xxx”,开发者的本意是只允许用户下载/download/目录下的文件。但是如果用户恶意构造path参数,比如path修改为/download/../../XXX那么用户就可以下载到其他目录的文件。

防范手段:

(1)文件上传时,开发者必须严格限制文件的后缀、大小等,并且把上传的文件放到一个用户无法直接访问到的目录中。

(2)文件下载的问题,首先应该尽可能的避免通过参数传入文件路径的方式来下载,其次应该对下载操作做严格的权限校验。

3 xssl击

xss攻击即跨站脚本攻击,它是网站中经常出现的一种攻击方式。用户通过输入~些事先准备好的JS代码并保存到服务器上,如果服务器原样的显示用户的输入,那么用户输入的JS就会被执行,从而实施攻击。

以OJ上的BBS为例,用户在回复帖子时,把“

公司地址: 北京市西城区德外大街83号德胜国际中心B-11

客服热线:400-656-5456  客服专线:010-56265043  电子邮箱:longyuankf@126.com

电信与信息服务业务经营许可证:京icp证060024号

Dragonsource.com Inc. All Rights Reserved

icp

猜你喜欢

程序设计
基于SolidWorks和VBA的电机阶梯轴建模程序设计
高职Java程序设计课程体系建设思考
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
基于LabVIEW的车载充电机控制程序设计
浅谈基于C语言的计算机软件程序设计
高职高专院校C语言程序设计教学改革探索
OBE理念下基于Greenfoot的Java程序设计课程教学改革
模块化程序设计在一体化检定平台中的应用
PLC梯形图程序设计技巧及应用