杨刚 胡盼红 古炜
"【摘 要】随着移动通信3G技术的普及和4G技术投入应用,移动终端不再仅是通讯网络的终端,还成为互联网的终端,移动设备与电脑之间的界限越来越不明显,以前在台式机上运行的应用大多可以移植到手机、平板电脑等移动设备上,这样更有利于快速掌握重要信息,移动应用成为近几年的应用热点。
【关键词】移动应用系统;设计;技术
1 系统设计
随着企业信息化进程的迈进,公司相继建设了多个生产和办公系统,在实际应用过程中发挥了巨大的作用,充分体现了信息交流、协同、协作的特点,达到了信息共享、专业信息集成的目的。
1.1 系统目标
1)充分利用中国石油移动办公的安全机制。
2)建设界面美观、易于扩展、功能齐全的移动办公平台。
3)集成对标系统,能对国际对标和国内对标等经营数据进行展示。
4)集成目前勘探开发系统的重要信息,对领导关心的重要生产数据在移动设备上进行展示。
5)对目前OA系统进行补充,开发会议、印章、请假审批功能,并实现领导在移动设备上的审批。
1.2 设计原则
1)安全性原则。系统安全稳定运行是移动应用生命力的重要保证之一。由于移动应用基于公共通信网络,所以在数据存储、数据传输中的安全性尤为重要。
2)模块化原则。各个系统基于移动开发系统平台实现,采用成熟的网络、表格、绘图、工作流等模块开发,系统架构稳定。
3)可配置原则。移动办公系统从一开始设计时就充分充分考虑到未来移动应用的需求和使用前景,因此是完全按照产品化、中间件的设计思路实现,最大限度的采用用户自定义的方式实现。
4)最佳用户体验原则。移动办公系统操作简单、易用,人机界面友好,能够实现表格拖动、数据钻取、固定表头等便于用户交互操作的需求。
1.3 总体架构
移动办公平台由四部分组成:①数据集成。将现有信息系统中的适合在移动终端上展示的部分迁移到移动应用平台上。②工作审批。在现有OA系统基础上加以扩展,包括会议审批、请假审批、印章审批。③移动数据服务端。用于存储通过数据接口从已有的应用系统中取得的数据,通过数据校验机制,保证移动端的数据与已有的应用系统中的数据同步。④移动数据客户端。在基于IOS的移动终端上以图形、图表的方式展示数据,并支持数据钻取。
1.4 功能架构
1.5 数据库设计
数据库设计按照现有运行系统的数据标准建立,数据表名、数据项名称、数据项代码、数据类型等与原系统保持一致。数据库软件采用Oracle10G。
2 关键技术
2.1 开发工具
系统开发工具主要采用基于原生(Native)的Xamarin开发框架,Xamarin是目前少数提供原生解决方案的跨平台开发工具,原生应用程序包含以下特性:①使用标准的用户界面并符合各个在用平台的设计准则。配合硬件装置以提供优化的效能。②Xamarin将原生的 IOS及Android API转换为C# 函式库供使用者使用,开发人员可使用C#撰写程序,并呼叫原生平台(IOS, Android)的API,且透过良好的设计,可以在不同平台共享部分程序代码。③开发人员可透过Xamarin编译程序,直接将程序编译为ARM的执行文件,并进行各平台的封装。编译封装完成的App由于不经过中间转译,直接编译为原生的二进制执行文件,因此具有好的运作效能。作为一个跨平台开发框架,Xamarin有很多优点。
2.2 关键技术
1)动态数据表及字段数据项,可以通过在服务器端配置各个子模块下显示的数据表以及各个表中显示的数据项。
2)工作流技术,可以通过在服务器端配置各个审批流程的节点以及规则等,系统上线后业务人员可以根据需求进行二次开发和调整。
3)安全性控制,通过与IAM以及移动应用平台的整合,保证了办公、生产等方面数据的安全。
4)接口数据定时抓取,通过开发相应的Windows服务程序,配置程序在相应的时间抓取相应的接口数据。
5)日志追踪管理,提供日志功能包括系统登陆日志、数据请求日志、系统错误日志。
6)数据加密与压缩,为了加强产品的安全性,移动办公系统提供了数据加密功能,在通讯服务器和移动客户端提供数据传输加密、数据接收解密功能。提供数据压缩功能,减少数据传送包大小、提高响应速度、减少手机GPRS网络流量功能、提高运行效率。
目前,系统已经投入运行,并且取得了良好的效果。移动应用的使用,为大家提供了一个新的工作工具,特别是在工作审批方面,大大的加快了流程处理时间,提高了工作效率。
[责任编辑:王伟平]
【摘 要】SQL注入漏洞对网站的安全构成严重威胁,然而SQL注入漏洞又具有较高的普遍性。因此查找SQL注入漏洞并了解其入侵方式,及时堵塞网站安全漏洞,是我们网站管理员必须要掌握的。本文以一款SQL注入工具入侵原理入手,讲解了其入侵步骤,并给出了防范措施。
【关键词】SQL注入;入侵;漏洞;防范
0 引言
SQL注入攻击指的是攻击者通过构建特殊的输入作为参数传入Web应用程序(一般通过网页地址栏或留言板等具有提交功能的栏目输入),应用程序接收后错误的将攻击者的输入作为原始SQL查询语句的一部分执行,导致改变了程序原始的SQL查询逻辑,额外的执行了攻击者构造的SQL查询语句。攻击者根据程序返回的结果,获得想得知的某些数据(譬如后台管理账户、密码),进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使信息泄露。
SQL注入攻击是黑客对网站进行攻击、渗透的常用手段,其风险性极高,并且因为SQL注入入侵跟普通的WEB页面访问没什么区别,所以防火墙与杀毒软件对SQL注入是没办法防范的。由于程序员的水平及经验参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,导致存在SQL注入漏洞的网站相当普遍。如何从根本上进行SQL注入防御,降低SQL注入风险具有极其重要的现实意义。
1 啊D注入工具入侵原理
所谓知己知彼,百战百胜。要想有效防御SQL注入攻击,就要了解其攻击原理。本文通过对一款黑客常用注入工具——啊D注入工具工作原理的讲解,来分析SQL注入的防范措施。
啊D注入工具的攻击方法实际上就是逐步测试、逐步猜解,猜解网站数据库中的后台管理员表名、字段名、字段值,进而获取到网站的管理员账号、密码,在其它工具获取网站后台登录地址的前提下,登录网站后台,获取网站控制权,甚至整个服务器的管理权限。
有了这个攻击工具,使得入侵存在SQL注入漏洞的网站成了小儿科的游戏,那些既不懂编程又不懂SQL、年纪小小的青年常常得以在一天之内入侵十多个网站。
2 啊D注入工具攻击步骤
2.1 啊D注入工具入侵的第一步是寻找注入点
怎样才算注入点呢?其实就是一类URL,就是网站的一些链接,在后面人为的添加一些SQL语句、单引号等之后,这些人为添加的语句可以最终被提交到数据库执行,并将结果在浏览器端显示出来,这样的URL就是网站的注入点。黑客通过执行后不同的返回结果,来猜解数据库的表名、字段名、字段值,进而入侵网站。
那么啊D注入工具是怎么寻找注入点的呢?实际上和手工注入一样,就是通过在一些网站链接地址后输入一些非法字符串,根据返回的结果判断网站是否可以进行注入。最常用的就是单引号测试法和1=2测试法。
单引号测试法就是在最后面加上单引号,如果结果返回“microsoft jet database engine 错误80040e14”之类的错误信息,就表示单引号被连接到SQL语句中执行了,就说明在该链接地址后面添加SQL语句可以被提交到数据库执行,就表示该链接地址存在SQL注入漏洞。
1=2测试法就是在网站链接地址后输入1=2,返回的结果如果是:BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录,或者原来正常显示的网页没有显示出来,就表示1=2被连接到SQL语句中执行了,就说明在该链接地址后面添加SQL语句可以被提交到数据库执行,就表示该链接地址存在SQL注入漏洞。
2.2 猜解表名
假如http://localhost/article.aspx?id=124是一个注入点,要用它来猜解表名。怎么提交?
http://localhost/article.aspx?id=124 and exists(select count(*) from admin)
然后看页面返回了,返回正常就表示该表存在,否则就不存在了。啊D工具就是这样猜解的,它的软件数据库里面有很多提前添加好的表名。然后猜解的时候就是挨个试了。
2.3 猜解字段名
有了表名,下一步就是猜解字段了。需要用到这样的语句:http://localhost/article.aspx?id=124 and exists(select username from admin)
也就是将count(*)换成了字段名。将设置列表中的字段挨个进去匹配。页面返回正常就表示字段存在,否则就不存在。
2.4 猜解字段长度
字段有了,下一步就是猜解字段值了,先猜解字段长度。
http://localhost/article.aspx?id=124 and (select top 1 len(username) from admin)>0
http://localhost/article.aspx?id=124 and (select top 1 len(username) from admin)>5
http://localhost/article.aspx?id=124 and (select top 1 len(username) from admin)>6
|直到准确判断出长度为止。其中的len()函数负责计算username中第一条记录的长度。
2.5 猜解字段值
知道了长度,下一步就是准确猜解每一位的值。
and(select top 1 asc(mid(username,1,1))from admin)>97
and(select top 1 asc(mid(username,1,1))from admin)>98