版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机系统安全课程论文 学号:24 姓名:田艳玲 班级:计科1101 专业:计算机科学与技术 学院:信息科学与工程摘 要随着网络技术和信息技术的发展,越来越多的不安全因素威胁着我们的计算机网络系统,其中SQL注入式其中的一种,它利用SQL语言的漏洞,对数据库、计算机系统等进行攻击。这种攻击可以跳过防火墙的检测,不易察觉。一旦攻击成功,它可以进行信息的盗取、网络和系统的瘫痪,被视为整个网络的威胁。防止SQL注入有很多方式,本实验通过编程式代码防止其发生。对SQL注入和注入防范分别进行演示,使更好的理解SQL注入与防范的过程。更多的了解有关于SQL注入的知识。关键字:SQL注入;数据库;防范目 录
2、一、绪论11.1研究的背景和意义11.1.1研究的背景11.1.2研究的意义11.2需求分析11.2.1 SQL语言11.2.2 Servlet21.2.3 JSP21.2.4 Tomcat3二、SQL注入选题的设计目标与原理32.1 SQL选题目标32.2 SQL注入选题设计原理3三、SQL选题设计方案43.1 常见相关技术比较43.1.1 编程防范43.1.2 数据库配置防范43.1.3 操作系统配置防范43.2 我所采用的技术5四、SQL注入选题实验环境搭建54.1 配置java JDK54.2 使用Eclipse54.3 安装Oracle数据库5五、SQL注入选题方案实施55.1方案设
3、计结构示意图55.2方案实施步骤6六、总结116.1 SQL注入选题设计总结116.2 对本门课程的认识及总结11SQL注入在信息系统开发中的系统安全防范设计一、绪论1.1研究的背景和意义1.1.1研究的背景随着网络技术和信息技术的发展,信息系统的体系结构也逐渐从C/S(客户/服务器)模式发展成B/S(浏览器/服务器)模式,B/S模式的信息系统具有更好的可维护性,系统的安装、运行、升级都十分方便,但是,正是这种方便,同时也给了攻击提供了方便SQL注入攻击就是其中的一种。1.1.2研究的意义SQL是结构化查询语言(Structured Query Language)的缩写,是标准的数据库操作语言
4、,当今的信息系统也离不开数据库,因此也离不开SQL。SQL注入攻击(SQL Injection Attack)是攻击者应用http(Hypertext Transfer Protocol,超文本传输协议)的请求B/S模式的信息系统发送恶意的SQL脚本,探测出信息系统开发者编程过程中的漏洞,然后利用这些漏洞,对信息系统的数据库内容进行直接检索或修改。许多信息系统由于开发者的疏忽,没有对用户输入数据的合法性进行严格判断,使应用程序存在漏洞,造成安全隐患,攻击者就是利用这些漏洞,达到攻击的目的。1.2需求分析为演示SQL所产生的效果,我将做一个系统,使用SQL注入进行登陆,完成效果,下面是制作系统所
5、需要用到的核心技术。1.2.1 SQL语言结构化查询语言(Structured Query Language)简称SQL(发音:/s kju l/ S-Q-L),结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。1.2.2
6、 Servletservlet是在服务器上运行的小程序。这个词是在Java applet的环境中创造的,Java applet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(CGI(Common Gateway Interface))应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,Javaservlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线
7、程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。1.2.3 JSPJSP是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP网页。JSP全名为Java Server Pa
8、ges,其根本是一个简化的Servlet设计,他实现了Html语法中的java扩张(以 形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。通常JSP页面很少进行数据处理,只是用来实现网页的静态化页面,只是用来提取数据,不会进行业务处理。JSP技术使用Java编程语言编写类XML的tags和scriptlets,
9、来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP
10、配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。1.2.4 TomcatTomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。诀窍是,当配置
11、正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为8.0.0-RC1 (alpha) Released。Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都
12、可以更改它或在其中加入新的功能。2、 SQL注入选题的设计目标与原理2.1 SQL选题目标进行SQL注入选题,更深一步的了解SQL注入的危害和形式。2.2 SQL注入选题设计原理信息系统基本上都是靠数据库来支撑的,尽管现在用的数据管理系统种类较多,但是他们基本上都支持SQL,虽然针对各种数据库管理系统的SQL语法不尽相同,但基本上是大同小异,易于区分和掌握,并且对于绝大多数防火墙来说,这种攻击时“合法”的,因此SQL注入攻击易于实施,具有广泛性。一旦攻击成功,信息系统所用数据库中的数据可以任由攻击者查看和修改,攻击者可以直接在数据库中添加具有管理员权限的用户,从何获得系统管理员权限,其危害是极
13、其严重的;如果信息系统中存放有秘密数据,则造成秘密泄露;如果攻击者修改数据库中的数据,要么造成系统的瘫痪,要么使系统中的数据以假乱真,误导系统的使用者做出错误的决策,从而造成更大的危险。当今的数据库管理系统都有一些工具和组件,可以直接与操作系统及网络联接。这就意味着攻击者通过SQL注入攻击一个信息系统后,其危害就不只局限于存储在数据库中的数据,攻击者还可以设法获得对DBMS(数据库管理系统)所在的主机的交互式访问,使其危害从数据库向操作系统、甚至整个网络蔓延。因此,我们不仅应当将SQL注入攻击看作是一个对存储在数据库上数据的威胁,而且应当看作是对整个网络的威胁。3、 SQL选题设计方案3.1
14、常见相关技术比较防止SQL注入的方法可以从系统编程防范、安全配置数据库管理系统、安全配置操作系统等方面进行:3.1.1 编程防范编程防范就是在编写的程序中加强安全防范,堵塞漏洞。编程防范总的原则就是少特权、多检验。少特权:不要给数据库连接或数据库用户太多的权限,应为不同的类型的操作建立和使用不同的账户,其权限与其操作相匹配。多检验:对用户输入从多方面检验其合法性,如检验数据库中是否包含单引号、双引号、分号、逗号、冒号、连接号等特殊字符或SQL语句、函数、数据类型等保留字符串,数据类型是否与预期类型匹配,数据长度是否超长等,一旦发现与预期不符的情况,应该放弃执行。3.1.2 数据库配置防范数据库
15、管理系统往往提供一些安全方面的配置项,如果将这些配置项配置准确,可以大幅度提高防范攻击能力:使用安全的账号和密码策略、使用Windows身份验证模式和管理扩展存储过程。3.1.3 操作系统配置防范操作系统一般都提供一些安全功能,如果配置好这些安全功能,就能对攻击起到一定的防范作用:选择安全的文件系统、对数据库文件进行权限设置与加密和对应用系统文件进行权限设置与加密。3.2 我所采用的技术我将演示在编程防范上所进行的防范:在编程代码中对SQL注入进行防范。只是对SQL注入的过程进行演示。4、 SQL注入选题实验环境搭建4.1 配置java JDK4.2 使用Eclipse下载eclipse软件,
16、配置好tomcat服务器。4.3 安装Oracle数据库并创建用户,表格,添加数据。五、SQL注入选题方案实施5.1方案设计结构示意图 编写shopping04项目SQL注入防范演示SQL注入演示java.sql.PreparedStatementjava.sql.StatementSQL注入防范成功SQL注入成功java.sql.PreparedStatement是Java类库中的一个类,可以有效的防止SQL注入,而java.sql.Statement无法防止SQL注入,尤其是代码中编写代码时SQL语句使用拼接式。5.2方案实施步骤1、编写shopping04项目,作为SQL注入防范的演示。
17、项目架构如图: 防止SQL注入的登陆代码:public Boolean checkUser(String loginid, String password) Connection conn=null;PreparedStatement stmt=null;ResultSet rs=null;try conn=JDBCUtil.getConnection();stmt= conn.prepareStatement(select * from customer where loginid=?);stmt.setString(1, loginid);rs=stmt.executeQuery();wh
18、ile(rs.next()if(password.equals(rs.getString(password)return true;return false; catch (Exception e) e.printStackTrace();finallyJDBCUtil.free(rs, stmt, conn);return false;2、部署Oracle数据库,添加此项目所需要的表、序列、触发器和数据。数据库架构如图: 3、复制shopping04项目,命名为shopping04_test,改写代码,作为SQL注入演示。如图所示: 不可防止的SQL注入代码:public Boolean checkUser(String loginid, String password) Connection conn=null;Statement stmt=null;Boolean rs=false;try conn=JDBCUtil.getConnection();stmt=conn.createStatement();String sql=select * from customer where loginid=+loginid+ and password=+password+;rs=stmt.execute(sql);retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖北武汉市某国企写字楼会务岗位招聘1人考试备考题库及答案解析
- 2026江苏南京大学图书馆仓储人员招聘考试参考题库及答案解析
- 2026中国矿业大学(北京)招聘9人考试备考题库及答案解析
- 2026中国农业科学院农产品加工研究所食物营养与功能性食品创新团队招聘合同制科研助理考试备考题库及答案解析
- 2026江西九江市彭泽县红光港管理服务中心招聘海关协管员3人考试备考题库及答案解析
- 2026广东深圳九州光电子技术有限公司招聘运维工程师等岗位3人考试参考试题及答案解析
- 2025浙江杭州余杭水务有限公司招聘36人考试参考试题及答案解析
- 2026达州农商银行通川支行寒假实习生招聘考试参考试题及答案解析
- 2026广西桂林市七星区编外聘用人员招聘2人考试参考试题及答案解析
- 2026日照银行见习人员招聘10人考试备考题库及答案解析
- 旋挖钻机地基承载力验算2017.7
- 2025-2030中国金属部分覆盖胆道支架行业市场现状供需分析及投资评估规划分析研究报告
- 抖音账号合作合同协议书
- 卫生间隔断协议书
- 轮机管理题库(助理管轮)
- 餐厅卫生管理制度方案
- 浙江开放大学信息时代的生产技术作业题库
- 猪场产房技术员述职报告
- 2025年独家总经销权合同
- 防爆工具安全操作规程(4篇)
- 中枢系统脱髓鞘病护理
评论
0/150
提交评论