OWASP要素增强Web应用程序安全2007.doc_第1页
OWASP要素增强Web应用程序安全2007.doc_第2页
OWASP要素增强Web应用程序安全2007.doc_第3页
OWASP要素增强Web应用程序安全2007.doc_第4页
OWASP要素增强Web应用程序安全2007.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OWASP要素增强Web应用程序安全随着Web应用程序的增多,随之而来的就是这些Web应用程序所带来的安全漏洞。不遵从规范化的编码指导,会使企业、员工以及企业的客户面对严重的安全风险,遭到各种恶意攻击。: - e% V8 kl, L1 r5 O0 z. T. Z0 C我们将向大家介绍Open Web Application Security Project (开放式Web应用程序安全项目,OWASP) 10要素,以及OWASP建议大家在软件开发生命周期中应该嵌入的标准化方法。: l3 y8 p- b9 J+ k+ ui, C+ Z+ ?; GCr/ & X商业风险0 _1 Wy8 q7 Q现在的企业都在向客户提供通过浏览器访问企业信息的功能,同时集成Web服务的应用程序也越来越多,这些都导致企业所面临的风险不断增加。这并不代表开发人员没有认真的对待程序开发工作,只是当Web应用程序的数量越来越多,其潜在的隐患也会越来越频繁的暴露在互联网下。根据OWASP的观点:* Z0 r# C$ ?7 E! p3 T1 P1 r* t; d# E9 b2 G. c* s9 * P& “当企业发布了一个Web应用程序,它们就是在邀请全球的网民向其发送HTTP请求。而攻击内容也可以随着这些正常的HTTP请求穿过防火墙,过滤系统,系统平台上的安全措施以及网络中的入侵检测系统,而不被企业所发现。这意味着企业的Web应用程序代码本身就是企业安全围墙的一部分。随着企业所采用的Web应用程序数量和复杂度的增加,企业的安全围墙将更多的暴露在网络中。”+ _$ F2 W# T( % I/ x- I. X8 f7 H: t+ ?b目前,企业所开发的很多新应用程序都是Web应用程序。另外,Web服务也越来越频繁的被用来集成Web应用程序或与Web应用程序进行交互。所带来的问题就是,Web应用程序和服务的增长已经超越了程序开发人员所接受的安全培训以及安全意识的范围。 h6 v- o/ I6 qT8 f: I9 ?( l) z* T随着存在安全隐患的Web应用程序数量的增长,OWASP也总结出了Web应用程序的十大脆弱点。在这个10要素列表中,不但包括了Web应用程序的脆弱性介绍,还包括了OWASP的建议内容,帮助程序开发人员和企业尽量避免这些脆弱点给企业系统带来的风险。1 V: K9 p) X0 Q3 y, r% q# A0 r. 5 d8 G$ G+ mOWASP 10要素中还包括了一个指南,帮助企业决定该如何向客户提供信息。比如联邦贸易委员会(FTC)就在2003年1月的商业案例文档中将这个列表作为了信息安全的参考内容。同年,FTC还将OWASP 10要素列表作为指控Guess公司没有尽力做好客户的信息安全保护工作的参考资料。0 r; w, h* M1 C! F5 l8 _$ i9 V: v9 v1 y / y! N. w10要素列表/ s! Y+ t* R# E# o5 v, t& z以下列表来自OWASP 10要素项目: (OWASP, 2006):% b S$ M; $ v/ K) 4 v# R! M _0 x- Y# Unvalidated Input非法输入 -在数据被输入程序前忽略对数据合法性的检验,是一个常见的编程漏洞。随着我们对Web应用程序脆弱性的调查,非法输入的问题已经成为了大多数Web应用程序安全漏洞的一个主要特点。$ h/ o( c* L) Q# Broken Access Control 失效的访问控制 -大部分企业都非常关注对已经建立的连接进行控制,但是,允许一个特定的字符串输入可以让攻击行为绕过企业的控制。& y8 M$ O( K# Broken Authentication and Session Management失效的账户和线程管理-良好的访问控制并不代表万事大吉了。企业还应该保护用户的密码,会话令牌,账户列表以及其它任何可以给攻击者提供有利信息帮助他们攻击企业网络的内容。# U3 S4 s8 N: % S4 L* n% o) j& g# Cross Site Scripting (XSS) Flaws 跨站点脚本攻击-XSS是一种常见的攻击。当攻击脚本被嵌入企业的Web页面或其它可以访问的Web资源中,当没有保护能力的台式机访问这个页面或资源时,脚本就会被启动。这种问题可以影响成百上千的员工以及企业客户的终端电脑。5 L3 L: W! s8 O: V$ c6 j# Buffer Overflows缓存溢出-缓存溢出问题一般出现在较早的编程语言如C语言编写的程序中。这种编程错误其实也是由于没有很好的确定输入内容在内存中的位置所草成的。在本文的后续部分中,我们会讲到,通过一些高级的编程环境,如Java以及.Net,可以很好的控制此类问题。% r) X/ q/ D! i5 s1 2 R# Injection Flaws 注入式攻击-如果没有成功的阻止带有语法含义的输入内容,有可能导致对数据库信息的非法访问。比如在Web表单中输入的内容,应该保持简单,并且不应该还有可被执行的代码内容。5 _$ q9 u- 4 / _+ D! # Improper Error Handling 异常错误处理-当错误发生时,向用户提交错误提示是很正常的事情,但是如果提交的错误提示中包含了太多的内容,就有可能会被攻击者分析出网络环境的结构或配置。6 - V3 w4 y! x# ?4 _# Insecure Storage 不安全的存储-对于Web应用程序来说,妥善的保存密码,用户名,以及其它与身份验证有关的信息是非常重要的工作。对这些信息进行加密是非常有效的方式,但是一些企业会采用那些未经实践验证的加密解决方案,其中就可能存在漏洞。. q! q2 I2 f6 b8 b2 b7 E) r9 K zP# Application Denial of Service 程序拒绝服务-与拒绝服务攻击 (DoS)类似,应用程序的DoS攻击利用大量非法用户抢占应用程序资源,导致合法用户无法使用该Web应用程序。 s p- t# q% y6 y7 a9 L# Insecure Configuration Management不安全的配置管理-有效的配置管理过程可以为Web应用程序和企业的网络架构提供良好的保护。8 B0 ) ) r$ O( R) G3 3 e9 k: Z0 ?- o4 w8 c y4 针对以上列表,我有两点要说明一下。首先,这个列表并不能涵盖企业的Web应用程序中的全部脆弱点,它只是OWASP的成员组织最常遇到的问题,因此也是你应该着重检查的内容。1 g6 g2 J1 s. J$ V4 _2 h& H* E6 q* x7 i0 H O2 U+ & v第二,这个列表并没有先后顺序。它只是根据每个OWASP成员根据自己企业的Web应用程序环境的脆弱性所排列的。OWASP一直在更新它的10大脆弱性排名。先前已有发表有关2004年OWASP十大排名的文章,这里笔者想深入探究这些OWASP相信会给网络应用环境带来最高风险的10大脆弱性。 : _1 P& h! m$ O. z$ b( Z! e8 V8 G: M. l6 e9 - I6 K) F在该系列的第1部分中,我给出了2004年的OWASP 10大脆弱性列表。 那篇文章不久,我收到了一封来自Andrewvan derStock,OWASP的执行理事的电子邮件。信中他叫我关注即将修订的新列表。OWASP计划在三月份发布2007年10大脆弱性清单。因此,现在我也要修订一下我的这个系列,把2007年的脆弱性包括进来。 2007年OWASP的10大排名6 a+ W. m8 h6 I a D/ G4 2004和2007年的名单有些类似,见表A。其中,未经验证的输入(Unvalidated input)、缓存溢出(buffer overflows)、不安全的配置管理(insecure configuration management),以及拒绝服务(denial of service)被去除了。另一方面,损坏的验证和会话管理(broken authentication and session management)被一分为二,作为两项列 入。 % Z5 e9 v9 * k6 mj列表中包含的新脆弱性有(根据RC1): 9 U; M5 c# e% K$ i* 4 Y) b1 V* 2 f! u7 J, i3 PA3.不安全的远程文件包含(Insecure Remote File Include):对远程文件包含易感的代码允许攻击者包含进入恶意的代码和数据,最后导致破坏性攻击,比如,服务器被完 全攻陷。 A5.跨站请求伪造(Cross Site Request Forgery ,CSRF):跨站请求伪造攻击会强制一个已登录受害者的浏览器向易受攻击的网络应用程序发送预验证(pre-authenticated )的请求,然后受害者的浏览器开始执行恶意行为,为攻击者谋利。 A9.不安全的通信( Insecure Communications):敏感信息总需要保护,可应用程序却常常在给网路交通加密时失败。 2007年的脆弱性选取来自对MITRE 2006年脆弱性趋势进行的10大应用程序安全问题的筛选。关于2007年OWASP 10大排名,MITRE的数据如图A所示。 ( v# h& l. p. z1 C) Y3 X+ D表 A0 G+ U% h) s* + u) W( e 2007年 OWASP 10大排名2004年 OWASP 10大排名A1. 跨站脚本,Cross Site Scripting (XSS)A4. 跨站脚本Cross Site Scripting (XSS)A2.注入缺陷, Injection FlawsA6. 注入缺陷, Injection FlawsA3. 不安全的远程文件包含,Insecure Remote File Include (新)_A4. 不安全的直接对象引用,Insecure Direct Object ReferenceA2. 破坏的访问控制,Broken Access Control (在2007年被分成两类)A5. 跨站请求伪造,Cross Site Request Forgery (CSRF) (新)_A6. 信息泄漏和异常错误处理,Information Leakage and Improper Error HandlingA7. 异常错误处理,Improper Error HandlingA7. 损坏的验证和会话管理,Broken Authentication and Session ManagementA3. 损坏的验证和会话管理,Broken Authentication and Session Management A8. 不安全的加密存储,Insecure Cryptographic StorageA8.不安全的存储,Insecure StorageA9.不安全的通信 Insecure Communications (新)在A10下讨论,不安全的配置管理A10. URL访问限制失败,Failure to Restrict URL AccessA2. 损坏的访问控制,Broken Access Control (在2007年被分成两类)_A1. 未经严整的输入,Unvalidated Input_A5.缓存溢出,Buffer Overflows_A9. 拒绝服务,Denial of Service_A10. 不安全的配置管理,Insecure Configuration Management o( q$ q: H& x+ e9 B图A MITRE脆弱性趋势 图表之外( P/ k- B+ m1 ?: Y0 S) uB其中未经验证的输入被去除了,一开始让人感到有点惊讶。而且,对2004和2007年的脆弱性列表进行进行一番表面审查,也能发现这个脆弱性是很多其他弱点的共同根由。然而,这种忽落可能并非那么非常重大,因为在2007年的列表中,许多脆弱性都把合法输入验证作为一项重要的漏洞防御措施。8 V! 4 k7 M; u, e4 I* l% 4 T( w1 g4 v溢出脆弱性(即,缓存溢出、整数溢出integer overflow,及格式串问题format string issue)也被忽略了,因为这些问题多出自低级别的开发语言,如C或者C+。现在最常 见的网络开发环境对这类问题不是那么敏感。图B显示的是各流行的开发环境中溢出脆弱性发生的可能性比较。 2 wY& E- q. h1 ) L( bu 图B 溢出脆弱性发生可能性 (来自 OWASP 缓存溢出, 2006) 通过该表可以看出,很显然今天最常使用的开发语言和网络应用程序开发环境(例如,Java、.NET、Perl)都是安全的。但这不等于说,例如使用.NET技术就能让你完全免疫。编 程语言或者开发环境自身内部的错误可能也会引入些许溢出问题。 4 J8 a* ( C0 Q( V) 1 G) n另一个企业开发应用程序时常犯的错误是,一方面依赖于开发环境(比如.NET)的安全性,一方面又调用用不安全的低级别语言(如c和c+)写成的外部工具和应用程序。用不安 全语言写的工具和应用程序数目越是巨大,如果把它们整合进入网络应用程序,那么风险也会越大。 : i9 G7 n/ A. n* k0 l) p3 |尽管拒绝服务(DoS)攻击漏洞现在仍是问题,在MITRE的等级排名上却比较靠后,在这里不能上榜。但这不应该解释为我们可以不把DoS当回事了。 1 T- e$ y4 b. R- ?最后,不安全的配置管理同样也没能进入2007年排名。这是唯一一项我相信应该保留的脆弱性。对于确保网络应用程序可靠,维持一个安全、稳定的程序运行环境非常重要。除了 应用程序在其上运行的服务器外,其他下层架构提供的支持服务包括: 9 5 y) E! Ci数据存储(Data storage)3 ! Q+ q! X; 4 - N: F目录服务(Directory services)& v* j) ) |) b6 3 8 z! P邮件(Mail)/ ?1 j P* ) m消息(Messaging) 一个有效的配置管理程序是保护信息资产的关键元素。对网络的攻击都是机会主义的。换言之,盗密者总是在找容易的目标,攻陷这样的目标所需工作量最低。基础架构的配置可 能不必是网络应用程序的实际组件,但是,它必须提供一个强健的环境,让基于网络的服务得以进行。 5 c6 g; L0 _- y结语6 P, / + S3 _o. X. I# E在接下来的文章中,我将探讨2007年的OWASP 10大排名。我们要看这些脆弱性排名靠前的原因,及如何防御潜在的漏洞利用。根据RC1,防御好10大脆弱性可以构建安全基础,降低 下列问题的发生可能性: & Q4 y7 Y: H; # p钓鱼攻击(Phishing attack),它能够利用上述所有10个脆弱性,尤其是XSS、低强度或者不存在的鉴别(authentication)或者授权检查(authorization check)。 隐私侵犯(Privacy violation),这由不充分的合法性检查、不完善的商业规则、和不够强的授权检查造成。 身份盗窃(Identity theft),这由弱或者没有加密控制、远程文件包含,及鉴别、商业规则和授权检查的问题造成。 跨站点脚本是Web程序很常见的漏洞,不论是个人用户还是商业用户,都会由于这种漏洞而遭受攻击。这里我们将详细介绍跨站点脚本的脆弱性,以及由此使得个人用户和企业用户所面临的风险。最后还会介绍如何消除或者抵御这类攻击。) Q. z# z5 e0 Bc! T# 9 k8 _( O+ |- K7 + U9 i& f2 Q8 我们将着重介绍Web应用程序中最大的脆弱性领域跨站点脚本(XSS)。XSS的脆弱性由来已久,然而,随着越来越多的蠕虫和病毒利用这一脆弱性进行破坏活动,企业系统中与XSS相关的安全风险也越来越明显。5 d1 s$ r7 / J) y/ d8 z* o% e6 w什么是XSS?* n$ Zi* O: T. d: V& C8 j! q! XSS漏洞一般出现在可以注入代码的Web程序中。利用这一漏洞的脚本可能来自服务器,但是并不在服务器上执行,而是在客户端的工作站上执行。目前有三种基本的XSS漏洞攻击:映射,存储和基于DOM(文档对象模块). G9 ! W8 A: i) _$ w: A* S) Z# . B V其中反射攻击最为常见。这类漏洞经常出现在网页中可以动态输入内容并返回结果的区域。搜索页面就是一个很典型的例子。当攻击者发现了存在这一漏洞的网页,他只需要将脚本输入文本框。当页面重新显示整段文字时,脚本便被执行了。0 |8 N* * Q, o+ 5 J0 V; w- v E9 T b- W3 S在很多情况下,黑客通过一些社会学工程来引诱用户点击经过特殊处理的链结 ,从而导致攻击发生。这种方式可以让黑客将脚本注入到网页中。(Jeremiah Grossman, Cross-site Scripting Worms and Viruses, April 2006)1 o4 A( 6 e . k# 9 f; n: A x+ H存储型弱点正如其名字所表示的意思。攻击者将恶意代码提交到有XSS漏洞的网站,或者网站的某个经常被用户访问的部分。比如一些社会网站以及用户提交评论的页面。当受害者打开相应的页面时,恶意脚本就会在用户不知情的情况下自动执行。因为浏览器认为这个存储型恶意脚本是来自受信的Web网站或服务器的。8 t2 G* p$ U5 D) e% ( C+ Y* d4 v1 N u8 D# O _以下是一个非常简单的存储型脚本攻击的例子。( D0 I- c/ B+ g2 3 j 8 whB9 r4 c脚本一般会插入到表单中,这在很多论坛或者拥有大量用户的服务器上很常见。比如黑客会将以下代码通过正常的发贴方式上传到在线论坛:5 N$ F% V. 5 ?3 m. m. m: _- t$ x9 F6 p: K) p, Palert(Hello World)3 E! J) c6 x7 c3 K) # r6 , z; n- S# j w- * N当不知情的用户打开这个帖子,代码就会在用户的电脑上执行。虽然我给出的这段代码没有任何有害的内容,但是如果代码中包含了以下内容,就不那么乐观了:- R8 r3 D+ $ O: l6 _) R& / F+ E& W6 _显示许可权限错误信息2 i7 a# D3 G( ( W8 i提示用户输入密码( T* m2 k3 n3 ( c8 N* A _4 f* ?将用户的密码通过邮件发送到黑客设定的服务器上% V. | c2 Y8 G/ P3 k4 9 A8 S5 h# P5 _8 o+ l J D& - v0 % : # y: A最后一种XSS弱点是基于DOM的攻击。作为AJAX的一部分,DOM是一种:+ ! l: _ ; u; Z3 m; q g ? s8 g“让程序员可以访问和控制Web页面文档内容的接口。它提供了一种结构化的面向对象的方法,可以对页面中特定的内容进行检索以及设定对象的属性。” (Mike Hall, Introduction to the Document Object Model, 2007).! b/ U, V6 c5 c/ 4 X& G; h) P! S/ j+ B# c- d( b在客户端的脚本中,存在DOM漏洞。一般来说这出现在脚本模块访问URL需要参数的时候。如果脚本使用的参数信息没有经过编码或过滤就写入到了 HTML文件中,那么很有可能会存在XSS漏洞。有关这方面的例子和更详细的说明,可以参考2005年Amit Klein的文章DOM Based Cross Site Scripting or XSS of the Third Kind,基于DOM的XSS攻击难以防御。因为DOM页面层中的所有方法都是受信的,植入在参数中的恶意代码可以和其他代码一样被执行。与存储型 XSS攻击一样,DOM脚本攻击的防御还是要依靠程序员在编程时的细心和安全意识。4 . n7 H6 l# l2 l6 f3 T9 L/ q6 a% e) |6 K7 m* L( o& E商业冲击 e! : / k. x% U$ q* j% X& G8 H* 5 M; X) O根据Grossman的观点,当攻击者成功利用XSS漏洞进行攻击后,可能进一步实施以下工作:% E1 i& F: W4 1 w- m% j5 l( r2 g, V( f* u( f; A; x强制发送电子邮件信息8 l3 J4 Nz+ u2 l转移资本8 Wy! k/ b. d6 |0 n删除或修改数据* N9 P5 Z3 k5 M% Z% h H使用被害人的电脑攻击其他服务器; 8 C4 O: e: 9 b下载非法内容% o2 S6 m9 Q$ c4 d7 g; s/ x, L8 b0 W( D5 R0 L( / f基本上说,Web网页脚本所能做的工作,黑客都可以通过成功的XSS攻击而实施。2 i9 p, F0 ) d7 d3 c$ Y$ a$ P# 7 B; B预防XSS攻击- t; a2 0 r; M0 L, v6 3 ) g& l: m! I由于很多Web应用程序都包含有漏洞,因此最好的预防XSS攻击的方式就是检测输入内容的合法性。比如,确保输入内容中不包括尖括号。这看上去很简单,但确是防御XSS攻击一个非常有效的手段。根据McClure, Scambray, 以及 Kurtz的说法:% I+ c: r0 V4 K- & / g7 x! NyH6 I% x* z+ T“我们遇到的几乎所有的XSS攻击都没有对输入内容的尖括号进行屏蔽或者重新编码” (Hacking Exposed, p. 565) 。! s/ r2 y( zS/ . w- |; d. q但是这并不仅仅是尖括号的问题。任何语法符号都不应该被允许。语法符号可能是来自数据库,或其他服务器。输入Web应用程序的任何内容必须经过过滤,确保用户最终看到的是单纯的文本内容。 b; z; H/ O $ / J, K) ! |5 Y1 _n3 Y$ _企业应对XSS攻击的方式还包括:! x. F( d. E2 W5 e# H* 3 / J/ W / t- b/ h( O( t: M1 G1.教育员工在点击电子邮件中的链结或即时消息中的链结时,要特别小心。3 ) zj B3 p1 ?3 B2.建立互联网接入控制策略,限制企业员工访问高风险网站(比如成人网站以及盗版媒体网站) 以及未知风险的网站。- j- J: H& T0 Q, o2 F3.确保用户的电脑上都安装了最新版的防火墙软件和反病毒软件。设置防火墙限制流出的数据。8 g; Z. d( P |! o: e+ 7 R ( D: U Bj4.确保所有敏感功能不会通过机器人或者第三方服务器来启动。 (Grossman).; k& S( K R( H6 D1 D* M# f! h5.手动或自动进行代码扫描,主动发现潜在的XSS漏洞。! K; g6 Y1 i0 Q; W+ Q a0 S3 j, K, c( * , c总结* 1 L c; V8 ?/ S h2 J1 j1 I* w8 q$ v( f- _XSS漏洞会给企业网络带来严重的安全风险。企业的敏感数据很可能由于XSS漏洞被泄露出去。正如我们上面介绍的,预防XSS攻击,需要企业终端用户以及程序员的协同努力,通过良好的技术方案抵御这种人为危害。UID36934帖子1797精华0积分2905J力豆10 贡献值0 阅读权限70在线时间221 小时注册时间2007-6-17最后登录2009-2-23查看详细资料 这里我将向大家介绍位于列表第二位的注入式漏洞。首先我们会简要介绍一下注入式攻击,然后深入分析SQL注入式攻击。因为SQL注入式攻击是企业Web应用程序最容易遭受的攻击类型。3 ! 5 l+ f, V% ? / 什么是注入式缺陷?* K, S6 N# L( s$ y* - d7 t, , S; X1 5 G0 r3 u+ Q0 v- Z$ : + n4 k简单地讲,注入式缺陷可依让攻击者通过“巧妙”的内容输入来改变应用程序的执行动作。比如改变接入控制,允许攻击者创建、修改、删除或者读取任何该应用程序可以读取的数据。根据OWASP的说明,最糟的情况可以使得Web应用程序彻底崩溃。8 U z7 q J$ F/ + e6 u0 g% Y) a注入式缺陷是由于程序开发人员对于用户输入的字符内容的假定过于简单而引起的。程序员没有考虑到用户可能会输入一些含有语义性内容的字符串,或者程序员没有对Web程序的输入内容进行全面有效的审核和过滤。& u K: ?% B9 o3 j注入式攻击主要包括三类:* Y, y d; 7 R3 b- t系统调用: V9 c; N2 o( D( h) D. J8 , W* Shell 命令 8 a/ z/ S; S: Y8 H + n PSQL 注入 5 |( J0 w. U* U2 S本文下面的内容将详细介绍SQL注入攻击的细节。如果想了解更多注入漏洞的信息,可以查看Injection Flaws 。+ # bB y3 m- d0 O) m/ U+ O r3 GSQL注入式攻击1 U) O$ q / r N, z2 1 p3 E8 V在这种注入式漏洞中,用户输入的内容是不会被过滤的。因此攻击者可以在输入的内容中加入SQL语句以及参数,从而实现数据库操作。% j0 O% * |0 t8 A7 q2004年Stephen Kost在它的报告(An Introduction to SQL Injection Attacks for Oracle Developers)中介绍了四种基本的 SQL注入攻击:, b; W+ Z5 R/ h: s- r b 1 q8 m, R: w1 ) J. vSQL操作攻击者通过变量操作改变 SQL语句 (e.g., UNION)。攻击者还可以通过修改WHERE 对象获取更多的数据库信息。 ; z8 L3 3 X; k代码注入在代码注入式攻击中,黑客在现有的SQL代码中加入一条活多条新的SQL语句。如果数据库在处理每个请求时不允许执行多个操作语句,那么就可以有效地避免这类SQL注入式攻击。 6 o* fL# e3 |5 Tk7 a0 功能调用注入在一个SQL语句中加入功能调用,可以构成一个功能调用形式的注入式攻击。这种攻击可以造成系统功能调用或者对数据表中的内容进行操作。 * t+ 3 k8 T0 f2 H5 y0 b缓冲溢出这种攻击主要针对那些没有打补丁的数据库服务器。通过输入特定的内容造成系统错误或执行恶意代码。1 v7 # z! U. A! o3 L* O4 |j1 i4 T- l1 H下面我们就来看看针对Oracle数据库的SQL操作攻击范例。图A显示的是由Web程序开发人员编写的用户登录系统中检测用户名和密码的代码。! c- V# h) w. x8 G/ C7 ( K- L 图A SQL操作攻击范例 (预期输入) (Kost, 2004)而图B显示了由攻击者输入的用户名和密码。这里我们可以看到,攻击者在输入密码的时候加入了OR运算符,并且加入了a=a,这使得密码判断总为TRUE。由于操作优先于规则的原则,WHERE对于任何一个密码都会得到TRUE的结论。+ f& V! u& Y) D6 c1 J 图B SQL操作攻击范例(任意输入) (Kost, 2004)有关其他攻击类型的范例,我们可以查看Kevin Spett 写的SPI Dynamics公司文档SQL Injection。) G0 # q# T( _5 U I防御SQL注入攻击z2 t0 xb4 e. t. a e防御任何类型的注入式攻击的最主要的方式就是对输入内容进行检查。这包括Web应用程序的各个界面获取的外来输入内容。图C展示了Web应用程序可能获取外来输入内容的四个渠道。. w% 4 % v- w5 e+ G B! - i 图C Web应用程序输入来自这几种途径的用户输入内容都有可能改变Web应用程序对数据库内容的访问、处理和显示。比如攻击者可以在查询请求中添加、删除或者修改URL参数。被隐藏的表单可能会被修改,也可能出现表单重复提交的情况。而数据库的信息,尤其是由其他程序写入的区域,很可能被有目的的或者偶然的被感染。这些漏洞的类型和数量完全是根据系统程序的漏洞和攻击者的智慧来确定的。6 n- d% 2 . K; V 抵御此类攻击的最有力方式就是加强代码的安全性。以下列出了Web应用程序开发团队应当遵守的一些原则:, O& C* u% ?) X 1.对任何输入内容进行检查。接受所有可以接受的内容,拒绝

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论