ImageVerifierCode 换一换
格式:DOC , 页数:5 ,大小:52.50KB ,
资源ID:1597127      下载积分:10 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-1597127.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SQL注入攻击及在Java Web应用中的防御方法研究.doc)为本站会员(gs****r)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

SQL注入攻击及在Java Web应用中的防御方法研究.doc

1、SQL 注入攻击及在 Java Web 应用中的防御方法研究【摘要】 互联网的高速发展使得网络安全成为各界关注的焦点问题。人们把在电子商务、社交网络等互联网应用中产生的大量重要数据存储于数据库中,而这些数据库便成为网络黑客的攻击目标。目前,SQL注入攻击是网络中最为猖獗的黑客攻击行为之一。本文将详细阐述 SQL注入式攻击的原理,并给出在 Java Web 应用程序中防御 SQL 注入攻击的有效方法。 【关键词】 SQL 注入 网络安全 数据库 Java Web 防御 如今,互联网已经融入现代社会的方方面面,电子商务、社交网络、在线教育(MOOC)已经成为当下人们生活不可或缺的组成。人们在使用这

2、些互联网应用时,会产生大量与自身相关的数据存储在数据库中。由于这些数据的潜在价值(如个人隐私数据、网银账户等) ,使得它们成为网络黑客主要的攻击目标之一。目前,最为常见的、破坏性最强的针对互联网应用数据库系统的攻击方式是 SQL 注入攻击。综合统计资料来看,SQL 注入约占据互联网安全威胁性事件总数的 1/3,且程逐年递增趋势;DB Networks 的统计表明,2014 年 SQL 注入漏洞数量较 2013 年增长104%1。因此,本文将探讨、研究注入技术背后的原理、实施方法和分类,来更好的应对这类攻击;同时结合 Java Web 开发技术,给出在 Java Web 应用程序中防御 SQL

3、注入攻击的有效方法。 一、SQL 注入攻击的原理 SQL 注入攻击(SQL Injection Attack, SQLI) ,是指利用应用程序层与数据库层之间的安全漏洞、通过恶意 SQL 语句攻击这些漏洞来非法获取目标数据的行为。简单来说,精心设计的恶意 SQL 语句会从应用程序前端提交至后台数据库执行,执行过程中应用程序开发者编写的原始SQL 语句会被恶意语句篡改,从而暴露攻击者想要获取的隐私数据。 图 1 描述了一个 B/S 架构应用程序遭受 SQL 注入攻击的基本流程。假设该系统关系型数据库中存储有某单位全体员工的个人信息,提交URL: Web 应用服务器将获取到参数 staff_id

4、=130 98,并在数据库中执行下列 SQL 查询语句: SELECT name, gender, age, salary, address FROM t_staff WHERE staff_id = 13098 ; 数据库将返回员工 ID(staff_id)为 13098 的员工的详细个人详细,如姓名、收入、家庭住址等。如果攻击者想要窃取全部员工的个人信息,针对上述 SQL 查询语句,他可以构造这样一条请求 URL: or 1=1 那么在数据库中将执行下列查询语句: SELECT name, gender, age, salary, address FROM t_staff WHERE s

5、taff_id = 13098 or 1 = 1; 由于 staff_id=13098 or 1 = 1 为永真句,因此该系列语句等效为: SELECT name, gender, age, salary, address 至此,攻击者成功窃取了全部员工的个人信息。 二、Java Web 程序对 SQL 注入攻击的防御方法 尽管 Java Web 技术在设计之初就十分重视安全性,Java Web 技术也是目前最安全的开发技术之一,但在实际开发和应用中,使用 Java Web技术构建的应用仍有可能受到 SQL 注入攻击的破坏。本文将讨论几种在Java Web 应用中防御 SQL 注入攻击的有效方

6、法。 2.1 使用正则表达式过滤参数 从前文论述我们可以看出,SQL 注入攻击的核心在于向数据库服务器提交含有特殊含义的字符,改变原始 SQL 语句的语义。因此,使用正则表达式过滤掉用户提交参数中的特殊字符(如转义字符) ,便能大大降低发生注入攻击的概率。 上述代码中的正则表达式”.*(;+|(-)+).*”可以检测出用户提交参数中的特殊字符(如转义字符单引号) ,将其替换为空格符,防止数据库受到注入攻击。 public static String filterSQLInjection(String param) return param.replaceAll(“.*( ;+|(-)+).*“

7、, “) ; String userName = filterSQLInjection(request. getParameter(userName) ) ; String userPasswd = filterSQLInjection(request. getParameter(userPasswd) ) ; 2.2 使用预编译技术防止 SQL 注入 SQL 注入攻击能够实现的基本前提是程序员使用拼接 SQL 语句的方式编写数据库操作语句,如: String sql = “SELECT * FROM t_admin WHERE user_ name = ” + userName + “ AN

8、D password = ” + userPasswd; ResultSet rs = statement.executeQuery(sql) ; 因此,防御 SQL 注入攻击的最有效方法是禁止使用拼接的方法编写SQL 语句,转而使用预编译技术进行数据库操纵方面的开发。 所谓预编译,指的是将格式结构固定的 SQL 语句编译后,存储在数据库缓存中,当调用该语句时,直接执行缓存中编译后的结果。使用预编译机制可以消除注入攻击的隐患,因为 SQL 语句已经通过编译,传入的参数不会跟其发生任何匹配关系。在 Java 中,通过PreparedStatement 类实现了预编译相关功能,使用方法如下: St

9、ring sql= “SELECT * FROM t_admin WHERE user_ name=? AND password=?“; PreparedStatement psmt=conn.prepareSattement(sql) ; psmt.setString(1, userName) ; psmt.setString(2, userPasswd) ; ResultSet rs = preState.executeQuery() ; 三、结束语 本文结合实例,论述了 SQL 注入攻击的原理和实施过程,讨论了 SQL注入攻击的分类和最新发展;最后,提出了 Java Web 应用程序防御 SQL注入的几种有效方法,具有一定借鉴意义。 参 考 文 献 1 王丽丽, 彭一楠, 王轶骏. 浅析 SQL 盲注攻击的实现J. 信息安全与通信保密, 2008, 05 期(05):71-73.

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。