浅谈用户输入对web程序安全的威胁及对策

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:monowing
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:分析了用户输入对web程序的安全带来的威胁,提出了构建应用程序安全的对策,并介绍了几种常用的工具。
  关键词:安全;用户输入;校验;攻击
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)03-10677-02
  
  1 引言
  
  用户输入部分是应用程序与用户交互的窗口,一般应用程序都是通过用户输入的数据来进行操作的。一些带有恶意的用户,往往会利用用户输入部分对应用程序进行攻击。如果对用户输入的内容不进行检验的话,往往会使得恶意用户有了攻击的窗口。而大部分的安全问题都是出现在应用程序层,而不是出现在网络硬件层。因而对用户输入合法性的判断对于应用程序来说十分重要。
  
  2 用户输入对web应用程序带来的威胁
  
  利用用户输入的攻击方式通常有以下几种:
  (1)缓冲区溢出。简单的说,缓冲区溢出是指当计算机程序向缓冲区内填充的数据位数超过了缓冲区本身的容量。溢出的数据覆盖在合法数据上。程序运行的理想情况是,程序检查数据长度并且不允许输入超过缓冲区长度的字符串。事实上,由于开发者的不注意,绝大多数程序都会假设数据长度总是与所分配的存储空间相匹配,这就为缓冲区溢出埋下隐患。当一个超长的数据进入到缓冲区时,超出部分就会被写入其他缓冲区,其他缓冲区存放的可能是数据、下一条指令的指针,或者是其他程序的输出内容,这些内容都被覆盖或者破坏掉。可见一小部分数据或者一套指令的溢出就可能导致一个程序或者操作系统崩溃。缓冲区溢出是由编程错误引起的,如果缓冲区被写满,而程序没有去检查缓冲区边界,也没有停止接收数据,这时缓冲区溢出就会发生。一般情况下,覆盖其他数据区的数据是没有意义的,最多造成应用程序错误,但是,如果输入的数据是经过“黑客”或者病毒精心设计的,覆盖缓冲区的数据恰恰是“黑客”或者病毒的入侵程序代码,一旦多余字节被编译执行,黑客或者病毒就有可能为所欲为,获取系统的控制权。
  (2)SQL注入。SQL注入攻击源于英文“SQL Injection Attack”。目前还没有看到一种标准的定义,常见的是对这种攻击形式、特点的描述。微软技术中心从两个方面进行了描述:一是脚本注入式的攻击。二是恶意用户输入用来影响被执行的SQL脚本。Stephen Kost给出了这种攻击形式的另一个特征:“从一个数据库获得未经授权的访问和直接检索”。SQL注入攻击就其本质而言,利用的工具是SQL的语法,针对的是应用程序开发者编程过程中的漏洞。当攻击者能够操作数据,往应用程序中插入一些SQL语句时,SQL注入攻击就发生了。由于SQL注入攻击利用的是SQL语法,使得这种攻击具有广泛性。理论上说,对于所有基于SQL语言标准的数据库软件都是有效的,包括MS SQL Server,Oracle,DB2,Sybase 等。当然,各种软件有自身的特点,最终的攻击代码可能不尽相同。SQL注入攻击的原理相对简单,易于掌握和实施,并且整个Internet上连接有数目惊人的数据库系统。归根到底,SQL注入攻击是来源于用户输入的内容。
  (3)跨站脚本攻击。所谓跨站脚本漏洞其实就是Html的注入问题,恶意用户的输入没有经过严格的控制进入了数据库最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行HTml代码。数据流程如下:恶意用户的Html输入—>web程序—>进入数据库—>web程序—>用户浏览器。从而引起跨站脚本的攻击。
  
  3 由用户输入带来的安全问题的解决方法
  
  要解决用户输入带来的安全威胁,最基本的方法就是要对用户的输入进行过滤。要实验也比较容易,只要对用户输入的内容进行校验就可以。用户输入校验成本低,但对应用程序的安全带来了很大的保障。总结的方法有以下几种。
  (1)设计好程序的用户界面,减少用户输入内容的威胁。有人认为,程序界面与程序的安全性没有关系。其实不然,例如:在用户输入的部分,使用textbox这种输入方式与下拉菜单相比,安全性是有区别,下拉菜单的方式对于程序的安全性来说更有保证。所以说设计一个好的用户输入界面,能够减少用户输入对程序的威胁。
  (2)对用户输入的内容进行过滤或校验。这也是最重要的一点。对于用户输入的过滤主要有两类,一是filter in过滤,简单地说filter in过滤就是规定那些字符可以进入系统。就是规定好用户可以输入那些字符或字符串,例如规定用户输入只能是a到z和0到9,只有这些字符才是合法的才能进入系统,其他的字符不能进入系统。二是filter out过滤,就是指那些字符不可以进入系统。例如规定 #&*- 这些字符不能进入系统,就是对用户输入的内容进行检测,遇到规定的字符就认为是非法的输入。而对于用户输入内容的检验,是检查用户输入的字符串模式是否与程序要求的模式一样。
  (3)程序的内部错误信息不要显示给用户。对于一般的用户而言,系统的错误信息并不重要,但对于一些别有用心、且具有丰富的攻击经验的恶意用户,他们会根据系统的错误,猜测整个系统运行的情况,从而猜测出更敏感的信息,对程序发起攻击。所以当系统出现错误的时候,不要把出错的页面显示给用户,而是把用户转到一个预先设计好的友好出错页面,给用户一个提示,说系统出错了,稍候重试之类。
  
  4 用户输入校验的常用工具
  
  (1)校验控件。各种开发工具都为开发者提供不同的工具。例如asp.net为开发者提供多种的校验控件。如RequiredFieldValidatot,RangValidator,RegularExpressionValidator,等。
  (2)正则表达式。正则表达式是用于描述文本字符串中的模式的语言,它是通过把文本抽象成各种表达式,使用模式把字符串解析成子字符串或替换原来的文本或重新设置文本格式。例如用java实验email校验的正则表达式部分程序如下:
  public class test{
  public static void main(String[] args){
  try{
  String s = " ";
  while(!s.equals("q")){
  System.out.print("input:");
  DataInputStream in = new DataInputStream(new BufferedInputStream(System.in));
  s = in.readLine();
  System.out.println("your input is :"+s);
  String check = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
  Pattern regex = Pattern.compile(check);
  Matcher matcher = regex.matcher(s);
  boolean isMatched = matcher.matches();
  if(isMatched){
  System.out.println("it's a email");
  }else{
  System.out.println("it's not a email");
  }}}catch(Exception e){
  System.out.println("error"+e.getMessage());}}}
  (3)安全的字符串類或者库。.net中为开发者提供了安全的string类,我们在开发的过程中可以使用这些类来保障程序的安全。
  
  5 结束语
  
  网络时代,使得资源共享更方便,开放源码使得开发者的效率更高,但这往往也是恶意用户实验攻击的地方。对用户输入的校验能够使得我们在使用开放源码的时候,软件的安全也有保障。
  参考文献:
  [1]王辉,陈晓平,林邓伟. 关于跨站脚本问题的研究[J]. 计算机与设计,2004.8.
  [2]龚静. 基于缓冲区溢出漏洞的攻击及防范技术探讨[J]. 湖州师范学院学报,2006.2.
  [3]欧阳利军,戴术其. SQl注入入侵分析及防范[J]. 计算机与设计,2005.6.
  [4]http://dev.csdn.net/article/43/43603.shtm.
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:学生学籍信息是学校的一项重要数据资源,在教育改革和素质教育促使学校的招生规模不断扩大的背景下,学生的各种信息量成倍增长,传统的手工管理已无法满足学校管理者对学籍管理的需要。因此,本文利用PowerBuilder强大的数据库操作特性和其Window plug技术设计了一个基于web学生学籍管理信息系统,较好的满足了学校管理者对学籍管理的需求,提高了管理的效率。  关键词:Web;学籍;管理信息
期刊
摘要:隨着网络资源的日益丰富,从中发现潜在的、有价值的信息的商业需求一直推动着数据挖掘技术不断向前发展,由于Web数据本身具有半结构化、组织性差的特点,使得Web数据挖掘工作变得十分困难,而XML的出现为Web数据挖掘技术带来了新的契机和巨大的发展。本文介绍了XML技术以及Web数据挖掘,阐述了XML技术在Web数据挖掘中的应用。由于基于XML的Web数据挖掘是一门新兴的技术,如何进一步充分利用W
期刊
摘要:PowerPoint电子讲义(下简称PPT)是如今学校课堂教学中非常常用的媒体形式和教学资源整合工具,许多学科教师的教学从某种程度上已十分依赖这一软件工具,但其对教学内容以页面为单位的呈现方式,却容易使学生在听讲过程中出现“迷航”现象。本文结合自身的教学实践,对PPT制作和使用中的“迷航”问题提出了几种解决策略和实用的建议。  关键词:Power Point电子讲义;迷航;解决策略  中图分
期刊
摘要:基于日志分析的数据还原操作的设计增加了一种关于Oracle分布式数据库的同步方法,在不增加前台应用程序的前提下,通过对数据库进行日志分析,使分数据库与主节点数据库达到同步的效果。本文通过对LogMiner工具的详细介绍,并结合實际对Oracle数据库归档日志文件进行分析和还原DML语句的设计后,最终达到分布式数据库进行同步的效果。  关键词:Oracle;日志分析;LogMiner;数据还原
期刊
摘要:针对某些PACS系统中存在医学图像存储管理效率不高的问题,给出一种基于DICOM标准的医学图像存储管理设计方案。为了更好地实现用户与医学图像库之间的交互访问,采用层次细节的思想,对图像库划分层次,分别存储原始图像、调整比例后的小图标和利用JPEG2000实现保留感兴趣区域压缩其他区域生成的多分辨率图像。方案可以在一定程度上提高系统的存储、传输效率,满足不同要求下对图像的快速访问。  关键词:
期刊
摘要:本文介绍了软件复用的概念、级别和困难所在。针对软件复用的特性,阐述了如何进行基于组件的系统开发。  关键词:软件复用;基于组件的系统工程;基于组件的系统开发  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)03-10656-02    1 引言    随着人们对软件需求的不断增加,软件的功能、可操作性、智能化程度也迅速发展,从而使软件变得更加复杂、更加庞大在,开
期刊
摘要:由我国提交的第三代移动通信标准TD-SCDMA系统的关键技术之一就是智能天线技术,本文介绍了智能天线的提出及其分类,并且根据其优点深入分析了该技术在TD-SCDMA中的运用。  关键词:智能天线;第三代移动通信系统TD-SCDMA  中图分类号:V351文献标识码:A文章编号:1009-3044(2007)03-10654-02    1 引言    最近几年来随着全球移动通信业务的迅速发展
期刊
摘要:随着网络技术与计算机开发语言的发展,越来越多的程序员利用Java来编写网络程序。数据报通讯是一个高效的网络通讯方式。通过C/S模型的程序来说明Java中如何利用UDP进行多播通信,对于网络编程有一定的参考价值。  关键词:Java;数据报;UDP;C/S;通讯  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)03-10669-01    1 引言    Java
期刊
摘要:本文介绍了在Word 中输入各类符号的方法。  关键词:Word;公式;符号  中图分类号:TP317文献标识码:A文章编号:1009-3044(2007)03-10660-01    1 引言    在各行各业的应用中,会需要一些特殊的公式及符号,如数学公式中用到的 等,如化学符号 等,还有如物理中用到的 等等。(本文以Word 2000为例,其它版本,界面虽略有区别,但大致相同,可灵活运
期刊
摘要:利用ASP.NET和ADO.NET技术开发的教育网站学生管理系统,实现了网站学生的动态管理,使得对教育信息的管理更加即时,提高了管理效率。本文首先对系统的开发原理进行了具体分析,然后对设计方案进行了详细介绍。  关键词:ASP.NET; ADO.NET; 学生管理系统  中图分类号:TP317文献标识码:A 文章编号:1009-3044(2007)03-10637-01    1 前言   
期刊