首页
业务
关于
客户
服务
联系
13520390899
资 深 的 互 联 网 开 发 服 务 商
专注于 网站开发 / 小程序开发 / APP开发 / 软件开发
网十科技 > 动态

承德APP开发谈谈对动态APP安全缺陷的一些解决方案

动态APP最怕的就是安全,安全上不去,往往会让你APP经常处于被动状态,下来承德APP开发就分享对动态APP安全缺陷的一些解决方案。

随着电子商务的兴起,许多企业都建立了自己的商务APP,在构建APP的时候,都会考虑网络安全问题,对于网络安全的投入较大,如使用防火墙、入侵检测、企业防病毒等安全产品,但APP还是有被攻击甚至完全被控制的可能。因为企业的APP一般都采用ASP、PHP或JSP等脚本语言来连接数据库,取得数据库里面的数据生成动态APP。当一个APP完全建立后,程序会很多。特别是APP设计的特殊性,服务器与用户的交互程序更多,所以,程序的漏洞也会增多,给APP带来不可估量的安全隐患,这些程序漏洞比网

站服务器的漏洞更为严重。

1APP设计安全漏洞的形成

ASP、PHP或JSP等脚本语言作为典型的服务器端APP设计技术,为APP开发人员提供了简单高效的动态Web应用程序开发方法。在APP设计时,使用上述脚本语言编程可以更好地管理APP资源,增加APP与浏览者之间的交互,如新闻发布系统、产品管理系统、会员管理系统、论坛反馈系统、在线调查系统、在线订单系统和留言板系统等,其共同点是用户输入很多资料,与其他浏览者交流或者与APP管理者交流。而交互正是漏洞形成的一大原因,因为用户输入信息不可预测,如果程序没有考虑或者考虑不全面,用户输入就有可能成为攻击事件,且不管有意还是无意。APP编程直接和服务器打交道,与APP目录、APP数据库设置、系统设置相关,通过这些程序访问APP目录、设置等所有服务器内容,若程序设计有漏洞,即APP有漏洞。

2APP设计的安全漏洞及对策

2.1登陆验证漏洞

凡带有交互性的APP,包括论坛、聊天室、信息网会员区、网上影院等,登陆验证是必不可少的组成部分。虽然登陆的验证程序只是APP整体的一部分,但却是APP的安全关口。APP设计者容易疏忽这一点,没有处理好口令验证程序的关口,以至他人趁虚而进,甚至造成重大影响与经济损失。许多APP都存在一个登陆验证的漏洞,而这个漏洞是在编写程序验证账号密码时由于程序不严谨而造成。如在APP设计会员区时,都会将账号、密码放在一个叫“User”的数据表中,并设置“username”和“password”两个字段分别表示用户的登录名称和登录密码。当验证时,检查用户输人的两个参数是否存在于这个数据表,如果存在,证明这个用户合法;不存在,证明用户不合法,而漏洞就出现在这段验证代码上。

在登陆验证(以asp为例)中常会用SQL查询语句来判断该用户是否为站点的合法会员。

<!连接数据库>

<!#includefile=dbconn.asp>

<%

Dimrs

setrs=CreateObject("Adodb.Recordser")‘定义一个Ado数据集实例

rs.source="select*fromuserwhereusername="""&username&"""andpassword="""&password&"""‘连

接登陆验证语句字串

rs.openrs.sourc,conn,1,1‘执行查询语句

%>

当根据以上的sql语句构造一组特殊的用户名和密码,例如用户名为该APP任意一个存在的用户名admin,密码为a"or"a"="a,则程序中sql变量的值将会变成sql="select*fromusernamewhereusername="a"andpassword="a"or"a"="a""显然,该查询语句的逻辑原意已被彻底改变,一个逻辑运算符or使用整个逻辑条件为真,即这条SQL口令验证语句已经失去了效用,只要知道了任意一个存在的用户名就可以成功地进入到敏感区域。解决漏洞的方案如下:1)在生成SQL查询语句之前,对用户输入的参数(用户名和密码)进行过滤:2)先查询用户名再进行密码验证。

2.2绕过验证直接进入设计页面漏洞

每个敏感的页面必须进行身份验证,如果用户知道了一个设计页面(如用ASP)的路径和文件名,而这个页面又没有验证的程序,则用户可直接输入这个设计页面的文件名,即绕过了登陆验证,直接进入了指定的页面。APP设计者除了登陆验证外还必须在有关页面进行身份验证,才能提高站点的安全指数。

2.3桌面数据库被下载漏洞

在ASP+Access应用系统中,如果获得Access数据库的存储路径和数据库名,则该数据库可以被下载到本地。如对于网上图书馆的Access数据库,一般命名为library.mdb等,而存储的路径一般为“URL/database”或放在根目录(“URL/”)下。这样,只要在浏览器地址栏中输入地址“URL/database/library.mdb”,就可以轻易地把library.mdb下载到本地的机器中。

在ASP程序设计中,应尽量使用ODBC数据源,不直把数据库名直接写在程序中,否则数据库名将随ASP

源代码的失密而一同失密,例如:

DBPath=serve.MapPath("./akkjj16t/kjhgb661/acd/avccx55/faq19jhsvzbal.mdb")

conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&DBPam

可见,AsP源代码失密后,数据库也很容易被下载。如果使用ODBC数据源,则不会存在conn.open“ODBCDSN名”。

2.4源代码泄露漏洞

为有效防止源代码泄露,可以对页面代码进行加密。一般有以下两种方法对ASP页面进行加密:

1)使用组件技术将编程逻辑封装入DLL中;

2)使用微软的scriptEncoder对ASP页面进行加密。

使用组件技术存在的主要问题是每段代码均需组件化,操作比较烦琐,工作量较大,而使用SciptEncoder对ASP页面进行加密,操作简单、收效良好。scriptEncoder方法具有以下优点:

(1)HTML具有很好的可编辑性,ScriptEncoder只加密在HTML页面中嵌入的ASP代码,其他部分仍保持不变,故仍可以使用FrontPage或Dreamweaver等常用APP编辑工具对HTML部分进行修改、完善,但不能对ASP加密部分进行修改,否则将导致文件失效;

(2)操作较简单,只要掌握几个命令行参数即可,ScriptEncoder的运行程序是screnc.exe,其使用方法如下:

screnc[/s][/f][/xl][/IdefLanguage][/e:defExtension]inpumleoutputfile

其中s为屏蔽屏幕输出;

f为指定输出文件是否覆盖同名输入文件;

xl指是否在.asp文件的顶部添加@Language指令;

l为defLanguag指定缺省的脚本语言;

e为defExtension指定待加密文件的扩展名;

(3)使用scriptEncoder可以对当前目录中所有的ASP文件进行加密,并把加密后的文件统一输出到相应的目录中,例如:screnc*.aspc:\temp;

(4)scriptEncoder是免费软件,该加密软件可以从微软APP下载,下载后,运行安装即可,利用session对象进行注册验证。

2.5文件上传漏洞

许多APP如论坛、同学录、邮件服务系统都提供了文件上传的功能,但设计者在设计用户提交参数缺少充分过滤,以至远程攻击者利用这个漏洞可以上传恶意文件,甚至造成系统数据库破坏或以Web权限在系统上执行任意命令。例如iXmail包含的\“ixmail_attach.php\”脚本对用户提交的附件缺少充分过滤,攻击者可以通过操作URL参数上传恶意文件(如php文件)到服务器上,虽然文件放置在web目录下的/tmp目录中,但可以远程访问,因此攻击者可能以web进程权限在系统上执行任意命令,故在文件上传之前,加入文件类型判断模块,并进行过滤。如要求用户上传图片时,对上传的文件格式进行判断,如果是指定的图片文件格式(如JPG、GIF)允许上传,其他格式诸如;*.EXE,*.PHP,*.AsP,*.JSP等可执行或可解释的程序文件就禁止上传。

3结束语

本文介绍了承德APP开发中APP设计容易出现的漏洞和解决方法,其安全的概念贯穿在整个APP设计过程中,故必须随时考虑安全的问题,APP才会多—些安全性。

7x24
售后服务支持
10
故障时长赔付
16
16年行业服务经验
20
售后服务人员
70
设计、开发团队
10
国内顶尖技术专家
1000
大型及上市企业
版权所有 © 北京网十互动科技有限公司 网站 APP 小程序 软件 备案号:京ICP备16050073号-2

电话咨询