防SQL注入的web系统交互设计

来源 :企业导报 | 被引量 : 0次 | 上传用户:lqw1100
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:用户使用表单页面进行交互时,系统对关键的SQL操作语句进行预处理,可以防止SQL注入。经过预处理的数据查询语言比普通意义上的SQL语句更加安全可靠。本文以留言板系统为例,对该系统的功能里涉及登陆、注册、添加留言的页面代码SQL语句部分进行了预处理,借以保证用户信息安全。
  关键词:QL预处理;留言板;SQL注入引言:根据Imperva公司的“监测黑客论坛:ADC每月网络攻击分析(2012年10月)”报告显示,在黑客论坛,最常被讨论的是拒绝服务(DoS)/分布式拒绝服务(DDoS)攻击和SQL注入。根据安全云托管公司FireHost公司9月份发布的报告显示,在2012年的前两个季度,SQL注入攻击上升了69%。SQL注入可以通过判断Web环境是否可以进入,进而输入特殊的语句判断数据库的类型、判断数据库的用户名和密码,最终进入后台管理获取用户信息,这对Web安全威胁很大。
  本文通过一个详细的案列来介绍如何在一个系统中利用SQL 预处理语句防范SQL注入。SQL预处理语句实现的过程就是内部转义的过程,它将一些需要转义的字符进行转义,对SQL语句进行预处理, 将SQL语句进行内部编译并优化,所需要的查询只需要被解析一次,使用的资源更少,执行速度更快,当然也更安全。
  系统包括5个模块:登陆、注册、添加留言、查看留言,删除留言。前四个模块是针对用户的,后一个模块是针对管理人员的。
  文章的第一部分是引言,第二部分介绍论文的技术背景,第三部分介绍系统的详细设计,第四部分是实现结果,第五部分是总结,第六部分是参考文献。
  一、技术背景
  本系统使用JSP+JavaBean+Access的方式来开发留言板系统[1]。所需要的软件涉及:Apache Tomcat 6.0,jdk1.7.0_17,Microsoft Access 2000, Macromedia Dreamweaver 8, Jcreator LE
  5.00,在所有的软件安装成功以后需要配置2个环境变量:在我的电脑-->属性-->高级-->环境变量里,系统变量里选中Path变量双击打开,在变量名的最后一个分号后面加入:C:Program FilesJavajdk1.7.0_17in;(前提是JDK是默认安装的),并在系统变量里新建变量名为ClassPath变量值为C:
  Program FilesJavajdk1.7.0_17lib的系统变量,配置Java所需的运行环境,是因为JSP页面里会涉及部分Java代码[2]。
  在这些软件中,JDK保证JSP中J(Java)的运行环境,Tom
  cat充当JSP中S(Server)服务器的功能,Dreamweaver提供
  JSP中P(Page)的编辑环境。 可以在Jcreator中查看Java文件,并将Java文件编译成.class文件,.class文件都被部署在C:Program FilesApache Software FoundationTomcat 6.0webappsROOTWEB-INFclassesmypackage文件夹下,在JSP文件中通过import导入这些class文件。
  系统共使用10个文件,其中包括2个class文件(Access
  ConnBean.class, MyUtil.class),6个jsp文件(Login.jsp, liuyan.
  jsp, writely.jsp, viewly.jsp, writelyd.jsp, delete.jsp),2个html页面(1.html, 2.html)。
  AccessConnBean.class 文件完成连接数据库的功能,MyU
  til.class文件完成GB2312码到Unicode码的转换,因表单输入页面是GB2312码,而JSP页面的字符串是以Unicode显示的。
  因为涉及将注册信息及留言信息写入数据库,系统设计了2个Access数据库——liuyan.mdb和user_info数据库。JSP访问Access数据库的方式是JDBC-ODBC[3]。数据库的详细设计将在第三章介绍。
  二、留言板系统
  (一)系统功能。本系统共包括2个子系统(用户登陆和留言系统),共完成5个功能:(1)登陆功能。登陆的用户必须是数据库里的用户,如果不是已经注册的用户,则需要点击注册。成功则进入注册界面,失败留在当前页面。(2)注册功能。单输入自己的用户名、密码、邮箱等信息,并通过writelyd.jsp页面写入数据库。(3)查看留言。已经存在的用户登录进入系统以后可以查看留言板信息。(4) 添加留言。用户输入正确的用户名和密码以后可以进入liuyan.jsp页面添加留言,留言内容会通过write
  ly.jsp页面添加到数据库。(5)删除留言。该模块需要用户登录,且必须知道管理员的用户名和密码,在2.html输入要删除的留言者姓名,通过delete.jsp页面进行处理,即可删除该留言者的留言。
  (二)数据库设计。留言版系统采用Access数据库,因为该数据库设计比较简单,只存放用户注册信息及留言信息,涉及了数据库的插入,查询,删除等操作。
  该系统包含两个数据库: user_info数据库和liuyan数据库,这两个数据库各自包含同名的一个表,user_info表包含us
  er_id,password, email, name, sex 5个字段。Liuyan表包含xm,
  email, ly, url 4个字段。
  (三)预处理实现 。留言板系统涉及用户信息的有以下3个页面:Login.jsp, writely.jsp, writelyd.jsp。他们分别完成的功能是使用用户名和密码登陆、将注册信息写入数据库、将留言信息写入数据库。这3个页面都是处理Web表单提交的信息,涉及信息的内容包括用户的用户名,密码,邮箱,留言内容,姓名,地址等。我们使用预处理语句处理数据库的查询、插入等操作, 在防止SQL注入的同时还可以提高系统性能。
  以Login.jsp登录页面为例,我们给出关键代码来给大家作对比,先给出普通版本的:
  AccessBean.OpenConn();
  String sql = “select user_id,password from user_info where
   user_id=‘”+userId+’” and password=‘“+password+“’”;
  ResultSet rs = AccessBean.executeQuery(sql);
  其中AccessBean是AccessConnBean的一个别名,我们在
  usebean中简化了这个类名,这个类用来连接Access数据库,根据数据查询返回结果集ResultSet。
  其次我们给出PrepareStatement版本的:
  Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);con=
  DriverManager.getConnection(“jdbc:odbc:user_info“,” “,””);
  String sql = select user_id,password from user_info where
  user_id=‘“+userId+”’ and password=“+password+”;
  PreparedStatement pstmt=con.prepareStatement(sql);
  ResultSet rs=pstmt.executeQuery();
  在这个版本中,第一句是连接JDBC-ODBC驱动,第二句连接user_info用户注册数据库,第三句是SQL查询语句,第四句将SQL语言进行预编译,并通过预编译语句对象执行查询,将数据结果返回给ResultSet。
  使用PreparedStatement预处理语句可以将SQL语言进行预编译,预处理可以自动检查已经绑定好的变量,同时强制转换这些变量使之与底层数据库驱动相匹配,它会忽略掉一些恶意的字符串,在防范SQL注入的同时因为其预编译的功能可以节约因多次重复输入相同条件的SQL语句而消耗的资源。
  总结:该系统经测试运行正常,可以实现登录、注册、添加留言、查看留言、删除留言等功能。经过Web表单预提交的数据经过SQL预处理可以防止SQL注入。
  参考文献:
  [1] 刘玉轩. 基于JSP 和MySQL 的留言板系统设计与实现[J].计算机与信息技术。
  [2] 张兴科. JSP动态网站设计项目教程. 北京: 中国人民大学出版社,2010
  [3] 张志峰等。Java Web技术整合应用与项目实战。北京:清华大学出版社,2010.
  [4] 王燕,李明,王惠琴.??Web数据库的连接技术及安全控制[J].
其他文献
乌拉特前旗以创建人口文化大院建设为载体,通过寓教于乐、喜闻乐见的宣传教育方式,增强宣传教育的感染力与吸引力,在城乡深入开展婚育新风进万家活动,有力推动新型生育文化建设。  近日,乌拉特前旗举办“十二五”期间婚育新风进万家活动动员会,会议传达了在新时期新形势下,婚育新风进万家活动的重点rag-,并对下一步婚育新风进万家活动进行安排部署。  会议期间,副旗长斯琴巴拉、旗长助理徐文卿与全旗人口计生系统干
中国工业与第三产业蓬勃发展,需要无数综合素质合格的技能型人才。然而不得不面对的问题是,即将成为技工的职高生在成长过程中,正面临许多看不见的心理问题的折磨,导致行为的
中部地区在我国经济社会发展中具有重要地位,是我国建设具有中国特色的社会主义的重要一环.消除中部地区在建设新农村过程中的误区和错误观念,提出建设社会主义新农村的切实
集造型艺术与舞台表演为一体的皮影戏在中国有着悠久的历史传统。它以独特的表演方式和独具魅力的艺术形式,得到无数艺术家的关注,并深植于民众心中,它所形成的艺术模型和舞台唱
根据欧州共同体“远程教育训练项目”的相关文件,支架式教学被普遍定义为“:为学习者构建一整套概念性的知识框架以促进学习者的知识构建.”当学习者面对较为复杂又难以理解
中职学校毕业的学生,面对的是社会,中职汽车专业培养的毕业生,有30%的从事本专业有关的工作,大多数选择与专业无关的工作,关健能力是雇员能够在工作岗位上发挥他专业能力的基
随着我国招生就业制度的深化改革,农业中专班主任工作越来越重要。在市场经济浪潮下,要把学校百计千方招进的学生留住不流失,班主任责任重大;要把家庭背景、社会阅历和个性特
[摘 要] 我国正处在经济、政治、文化飞速发展的阶段,人民的生活水平也在不断提高,在这样的环境下,医疗纠纷反而成为社会的问题。在平时的新闻和各种案件中,都可以听到、看到关于各种医疗纠纷的事故。而医疗纠纷,很大程度上是医生和患者不能有很好的沟通而导致的结果。高职临床医学的学生尤其应该锻炼好自己与患者沟通的能力,以便自己的职业和人身安全都有较高的保障。临床医学的学生不但包括在各所大学里面,而且在很多高
目的:探究肺心病合并慢性呼吸衰竭36例临床护理.方法:我院选取36例确证肺心病合并慢性呼吸衰竭患者,并对患者生命体征和意识状况进行了检测、观察、评估.结果:经积极治疗和护
美国一个议员助手曾说:国会研究的问题有90%来自《纽约时报》和《华盛顿邮报》的头版。在英国,《泰晤士报》倾向于保守党,而《卫报》倾向于自由党或工党读者,两份报纸读者多