web应用程序的安全(上)_第1页
web应用程序的安全(上)_第2页
web应用程序的安全(上)_第3页
web应用程序的安全(上)_第4页
web应用程序的安全(上)_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

1、12007.09Web应用程序的安全什什么么是是WebWeb应应用程序?用程序?l Web应用程序就是基于WEB开发的程序。一般用来作一些网络具有交互功能的东西。例如你需要再你的网页中取得用户的信息并且根据这些信息给出不同的返回信息,就需要编程来完成。一些常见的WEB应用程序开发例如:聊天室,留言版,电子商务等都是这类WEB应用程序。l Web应用程序种类:ASP、PHP、JSP、ASP.NET等等。2培培训内训内容容l 1、从威胁、对策、漏洞和攻击的角度分析了Web应用程序的安全。如果您在应用程序设计、实现和部署过程中考虑安全功能,将有助于更好地理解攻击者的思想。通过从攻击者的角度思考问题并

2、了解他们可能采取的策略,您在应用对策时将会更加有效。本模块介绍了典型的攻击者方法,并简要描述了对典型攻击的剖析。3培培训内训内容容( (续续) )l 2、以展示攻击者用来危及Web应用程序安全的常见方法开始,并建议使用STRIDE方法将这些威胁分类。然后介绍了可能危及您的网络、主机基础结构和应用程序安全的最大威胁。有关这些威胁的知识和相应的对策为威胁建模过程提供了必要信息。l 3、使您可以识别对您的特定方案而言存在的威胁,并可以根据它们给您的系统造成的危险程度对其区分优先次序。4学习学习目目标标l可以实现:l1、开始从攻击者的角度考虑问题。l2、了解在威胁范畴广泛使用的STRIDE方法。l3、

3、识别并应对在网络、主机和应用程序级别存在的威胁。5准准备备工作工作l开始威胁建模过程之前,理解以下基本术语是至关重要的。l资产:具有价值的资源,如数据库中或文件系统上的数据,或者是系统资源l威胁:可能危害资产的潜在发生(恶意或非恶意)l漏洞:使威胁成为可能的弱点l攻击(或利用):所执行的危害资产的操作l对策:用以解除威胁并减轻危险的安全措施6对对攻攻击击的剖析的剖析l通过了解攻击者攻击您的Web应用程序所采用的基本方法,您可以确定您面对的对象,从而采取更有效的防御措施。攻击者方法的基本步骤总结如下:l1、调查和评估l2、利用和渗透l3、提升特权l4、保留访问权l5、拒绝服务7对对攻攻击击的剖析

4、的剖析8攻攻击击方法的基本步方法的基本步骤骤l调查和评估:l 先后对潜在目标进行调查和评估。攻击者通常采取的第一步是调查潜在目标,以识别和评估其特征。这些特征可能包括它所支持的服务和协议,以及潜在漏洞和入口点。攻击者使用在调查和评估阶段所收集的信息来规划最初的攻击。l 例如,攻击者可以通过测试检测跨站点脚本(XSS)的漏洞,以查看网页中的控件是否会返回输出。9利用和渗透利用和渗透l 对潜在目标进行调查后,下一步是利用和渗透。如果网络和主机是完全安全的,则您的应用程序(前门)将成为攻击的下一渠道。l 对于攻击者而言,进入应用程序最简便的方法是通过合法用户使用的同一入口例如,通过应用程序的登录页面

5、或不需要身份验证的页面。10提升特提升特权权l 攻击者在通过向应用程序插入代码或创建与Microsoft Windows 2000操作系统进行的已验证身份的会话来设法危及应用程序或网络的安全后,他们立即尝试提升特权。特别是,他们想得到Administrators组成员帐户提供的管理特权。他们也寻求本地系统帐户所提供的高级别特权。l 在整个应用程序中使用特权最低的服务帐户是针对特权提升攻击的主要防御措施。而且,许多网络级别的特权提升攻击要求交互式的登录会话。11保留保留访问权访问权l 获得系统的访问权后,攻击者采取措施使以后的访问更加容易,并且掩盖其踪迹。用来使以后的访问更加容易的常用方法包括插

6、入后门程序,或使用现有的缺少强大保护的帐户。掩盖踪迹通常包括清除日志和隐藏工具。因此,审核日志是攻击者的主要目标。l 应该确保日志文件的安全,而且应该对其进行定期分析。日志文件分析通常会揭露尝试的入侵在进行破坏之前的早期迹象。12拒拒绝绝服服务务l 无法获得访问权的攻击者通常装入拒绝服务的攻击,以防止其他攻击者使用此应用程序。对于其他攻击者而言,拒绝服务选项是他们最初的目标。例如SYN大量攻击其中攻击者使用程序发送大量TCPSYN请求,来填充服务器上的挂起连接队列。这样便阻止了其他用户建立网络连接。13威威胁类别胁类别l 因为存在许多不同的攻击和攻击技术,所以从攻击者要达到的目标的角度来考虑威

7、胁是很有用的。这使您的注意力从识别每个特定攻击(它实际上只是达到目标的一种方法)转移到可能的攻击的最终结果。14STRIDESTRIDEl 应用程序所面临的威胁可根据攻击的目标和目的进行分类。熟知这些威胁的类别有助于您组织安全策略,从而对威胁作出规划的响应。STRIDE是Microsoft对不同威胁类型进行分类所使用的首字母缩略语。lSTRIDE表示:l 哄骗(Spoofing):哄骗是指尝试使用假身份获取系统的访问权。可以使用偷取的用户凭证或假的IP地址来实现。攻击者作为合法用户或主机成功获取访问权后,则可以开始特权提升或滥用授权。15STRIDESTRIDEl 篡改(Tampering):

8、篡改是指未经授权修改数据,例如当数据通过网络在两台计算机之间传递时。l 抵赖(Repudiation):抵赖是指用户(合法或非合法)否认他们已执行了特定操作或事务的能力。没有足够的审核,抵赖攻击很难证明。16STRIDESTRIDEl 信息泄漏(Information Disclosure):信息泄漏是指保密数据的不期望的泄漏。例如,用户查看无权打开的表或文件的内容,或者监视网络上以存文本形式传输的数据。有关信息泄漏的漏洞的示例包括使用隐藏表格字段、网页中嵌入的注释(其中包括数据库连接字符串和连接详细信息)以及脆弱的异常处理(它可能导致内部系统级别的详细信息暴露给客户端)。这些信息中的任何内容

9、对攻击者都非常有用。17STRIDESTRIDEl 拒绝服务(Denial of Service):拒绝服务是使系统或应用程序不可用的过程。例如,拒绝服务攻击可能通过以下途径实现,使用请求轰击服务器以耗费所有可用的系统资源,或者向其传输可使应用程序进程崩溃的破坏性的输入数据。l 特权提升(Elevation of Privilege):当具有有限特权的用户冒充具有高级特权的用户来获得应用程序的特权访问权时,会发生特权提升。例如,具有有限特权的攻击者可能提升其特权级别以危害并控制具有高级别特权且受信任的进程或帐户。18STRIDESTRIDE威威胁胁和和对对策策l STRIDE所描述的每种威胁类

10、别都有相应的一套用以降低危险的对策技术。下表汇总了这些技术。相应的对策取决于特定的攻击。适用于网络、主机和应用程序级别的更多威胁、攻击和对策将在后面介绍。STRIDE危险和对策19威威胁胁对对策策哄骗用户身份使用增强的身份验证。不要以纯文本形式存储机密(例如:密码)。不用通过网络传递纯文本形式的凭证。使用安全套接字层(SSL) 保护身份验证 Cookie。STRIDESTRIDE威威胁胁和和对对策策威威胁胁对对策策篡改数据使用数据哈希和签名。使用数字签名。使用增强的身份验证。在通讯链接中使用反篡改协议。使用提供消息完整性的协议来确保通讯链接的安全。抵赖创建安全的审核记录。使用数字签名。信息泄漏

11、使用增强的身份验证。使用增强的加密。使用可提供消息保密性的协议来确保通讯链接的安全。不要以纯文本形式存储机密(如密码)。拒绝服务使用资源和带宽调节技术。验证并筛选输入。特权提升遵循最低特权的原则,使用最低特权服务帐户来运行进程和访问资源。20网络网络威威胁胁和和对对策策l 组成网络基础结构的主要组件是路由器、防火墙和交换机。它们就像看门人一样保护服务器和应用程序免受攻击和入侵。攻击者可能会利用未正确配置的网络设备。通常的漏洞包括默认安装设置很脆弱、访问控制广泛开放以及设备缺少最新的安全修补程序。最危险的网络级别威胁包括:1、信息搜集 2、侦听 3、哄骗 4、会话劫持 5、拒绝服务21信息收集信

12、息收集l 网络设备和其他类型的系统一样可以被发现和分析。攻击者通常从端口扫描开始。他们在识别开放端口后,使用标志攫取和枚举来检测设备类型和确定操作系统及应用程序版本。具备了这些信息后,攻击者可以攻击那些可能未使用安全修补程序更新的已知漏洞。l防止收集信息的对策包括:l a、配置路由器以限制它们对于跟踪足迹请求的响应。b、配置网络软件(如软件防火墙)所驻留的操作系统,通过禁用不使用的协议和不需要的端口来防止跟踪足迹。22侦侦听听l 侦听或偷听是指监视网络传输以获取纯文本形式的密码或配置信息的行为。采用简单的数据包侦听器,攻击者可以轻易读取所有纯文本通信。而且,攻击者可以解开采用轻量级哈希算法加密

13、的数据包,并可以破译您认为安全的有效负荷。侦听数据包要求在服务器/客户端通讯路径中有一个数据包侦听器。l有助于防止侦听的对策包括:la、使用增强的物理安全和合适的网络分段。这是防止从本地收集通信的第一步。lb、将通讯完全加密,包括身份验证凭证。这样即可防止攻击者使用侦听的数据包。SSL和IPSec(Internet协议安全)是加密解决方案的示例。23哄哄骗骗l 哄骗是在网络上隐藏真实身份的方法。为创建哄骗身份,攻击者使用并不代表数据包真实地址的假的源地址。哄骗可用来隐藏攻击者的原始来源,或者规避网络访问控制列表(ACL),该列表用以限制基于源地址规则的主机访问。尽管从来也无法追踪到精心设计的哄

14、骗数据包的发信人,但组合使用各种筛选规则可以防止在您的网络上生成哄骗数据包,从而使您可以显著地阻止哄骗数据包。l防止哄骗的对策包括:la、筛选从您的外围的内部IP地址进入的数据包。lb、筛选从无效的本地IP地址传出的数据包。24会话会话劫持劫持l 会话劫持也称为maninthemiddle,它欺骗服务器或客户端接受上游主机为实际的合法主机。不是上游主机而是攻击者主机操纵网络,从而攻击者的主机似乎成为期望的目标。l有助于防止会话劫持的对策包括:la、使用加密的会话协商。lb、使用加密的通讯通道。lc、让自己能够得到平台修补程序通知,以消除TCP/IP漏洞,如可预测的数据包序列。25拒拒绝绝服服务

15、务l 拒绝服务拒绝合法用户访问服务器或服务。SYN大量攻击是网络级别拒绝服务攻击的典型示例。它容易启动且难以跟踪。攻击的目标是向服务器发送多于其处理能力的请求。此攻击利用TCP/IP连接建立机制的潜在漏洞,向服务器的挂起连接队列发送大量数据。l防止拒绝服务的对策包括:la、应用最新的服务数据包。lb、通过应用合适的注册表设置来强化TCP/IP堆栈,以增加TCP连接队列的大小,减少连接建立时间,并采用动态储备机制来确保连接队列不耗竭。lc、使用网络入侵检测系统(IDS),因为它能自动检测并响应SYN攻击。26主机威主机威胁胁和和对对策策l主机威胁存在于根据其建立应用程序的系统软件内。其中包括Wi

16、ndows 2000、Internet信息服务(IIS)、.NET Framework和SQLServer2000,具体取决于特定的服务器角色。最危险的主机威胁包括:l1、病毒、特洛伊木马和蠕虫病毒 2、跟踪足迹 3、概要分析 4、密码破解 5、拒绝服务 6、任意代码执行 7、未授权访问27病毒、特洛伊木病毒、特洛伊木马马和蠕虫病毒和蠕虫病毒l 病毒是一种设计用来执行恶意操作并造成操作系统或应用程序破坏的程序。特洛伊木马与病毒类似,不同的是它将恶意代码包含在看起来无害的数据文件或可执行程序内。蠕虫病毒与特洛伊木马类似,不同的是它自行在服务器之间进行复制。蠕虫病毒很难检测,因为它们通常不创建可以

17、看到的文件。通常在蠕虫病毒开始消耗系统资源时注意到它,因为此时系统速度减慢或其他应用程序的执行终止。红色代码蠕虫病毒是攻击IIS的最臭名昭著的病毒;它依赖于特定ISAPI筛选器中的缓冲区溢出漏洞。28病毒、特洛伊木病毒、特洛伊木马马和蠕虫病毒和蠕虫病毒l 尽管这三种威胁是实际攻击,但是对以下对象构成了严重的威胁:Web应用程序、这些应用程序所在的主机以及用以传输这些应用程序的网络。对任何系统的攻击都可能取得成功,这是因为系统存在许多漏洞,如脆弱的默认设置、软件缺陷和Internet协议的固有漏洞。l对病毒、特洛伊木马和蠕虫病毒可以使用的对策包括:29病毒、特洛伊木病毒、特洛伊木马马和蠕虫病毒和

18、蠕虫病毒la、通过最新的操作系统服务数据包和软件修补程序保持最新状态。lb、禁用防火墙和主机上所有不必要的端口。lc、禁用不使用的功能,包括协议和服务。ld、强化脆弱的默认配置设置。30跟踪足迹跟踪足迹l 跟踪足迹的示例有端口扫描、ping扫射和NetBIOS枚举,攻击者可使用这些方法来发现有价值的系统级别的信息,以准备更重要的攻击。可能被跟踪足迹发现的信息类型包括帐户详细信息、操作系统和其他软件版本、服务器名称和数据库方案的详细信息。l有助于防止跟踪足迹的对策包括:31跟踪足迹跟踪足迹la、禁用不必要的协议。lb、采用相应的防火墙配置来锁定端口。lc、使用TCP/IP和IPSec筛选器以进行

19、深度防御。ld、配置IIS以防止通过标志攫取泄漏信息。le、使用可配置的IDS来识别跟踪足迹模式并拒绝可疑通信。32密密码码破解破解l 如果攻击者无法与服务器建立匿名连接,他或她将尝试建立经过身份验证的连接。因此,攻击者必须知道一个有效的用户名和密码组合。如果您使用默认帐户名,则为攻击者创造了开始的机会。然后,攻击者只需破解帐户的密码。使用空密码或弱密码会使攻击者的工作变得更加容易。l有助于防止密码破解的对策包括:33密密码码破解破解la、对所有帐户类型使用强密码。lb、对于最终用户帐户使用锁定策略,以限制可用来猜密码的重试次数。lc、不要使用默认帐户名,并且重命名标准帐户,如管理员帐户和许多

20、Web应用程序所使用的匿名Internet用户帐户。ld、审核失败登录是否属于劫持密码尝试模式。34拒拒绝绝服服务务l 以基础结构内的几个目标为目的的许多方法都可以实现拒绝服务。在主机上,攻击者可以通过强力攻击应用程序来中断服务,或者攻击者知道您的应用程序所在的服务中或运行服务器的操作系统中所存在的漏洞。l有助于防止拒绝服务的对策包括:la、以防止拒绝服务为目标,配置您的应用程序、服务和操作系统。35拒拒绝绝服服务务lb、通过修补程序和安全更新保持最新状态。lc、针对拒绝服务,强化TCP/IP堆栈。ld、确保您的帐户锁定策略不能用来锁定众所周知的服务帐户。le、确保您的应用程序能够处理大容量通

21、信,且设置了阈值以处理反常的高负载。lf、检查您的应用程序的故障转移功能。lg、使用IDS可检测潜在的拒绝服务攻击。36任意代任意代码执码执行行l 如果攻击者可以在您的服务器上执行恶意代码,则攻击者或者危及服务器资源的安全,或者继续攻击下游系统。如果攻击者代码运行所在的服务器进程越权,则任意代码执行所造成的危险更大。常见漏洞包括弱IID配置和无修补程序的服务器,这将允许路径遍历和缓冲区溢出攻击,都可能导致任意代码执行。l有助于防止任意代码执行的对策包括:37任意代任意代码执码执行行la、将IIS配置为拒绝带有“./”的URL,以防止路径遍历。lb、锁定具有受限制的ACL的系统命令和实用程序。l

22、c、通过修补程序和更新保持最新状态,以确保快速修补新近发现的缓冲区溢出。38应应用程序威用程序威胁胁和和对对策策l 分析应用程序级别威胁的较好方法是将其按照应用程序漏洞类别来组织。下表总结了本次课培训的后续部分和所使用的各种类别,以及对您的应用程序的主要威胁。按应用程序漏洞类别分类的威胁39类别类别威威胁胁输入验证缓冲区溢出;跨站点脚本;SQL插入;标准化身份验证网络偷听;强力攻击;字典攻击;Cookie重播;凭证偷窃授权特权提升;机密数据泄漏;数据篡改;诱惑攻击应应用程序威用程序威胁胁和和对对策策类别类别威威胁胁配置管理未授权访问管理界面;未授权访问配置存储区;检索明文配置数据;缺少各自的可

23、说明性;越权进程和服务帐户敏感数据访问存储区中的敏感数据;网络偷听;数据篡改会话管理会话劫持;会话重播;maninthemiddle攻击加密不完善的密钥生成或密钥管理;弱加密或自定义加密参数操纵查询字符串操纵:表格字段操纵;Cookie操纵;HTTP头操纵异常管理信息泄漏;拒绝服务审核和记录用户拒绝执行操作;攻击者利用应用程序而不留踪迹;攻击者掩盖其踪迹40输输入入验证验证l 如果攻击者发现您的应用程序对输入数据的类型、长度、格式或范围进行了无理由的假设,则输入验证是一个安全问题。攻击者然后便可提供精心设计的输入,从而危及您的应用程序的安全。l 当网络和主机级别入口点完全安全时,您的应用程序所

24、暴露的公共接口则成为攻击的唯一来源。对您的应用程序进行输入既是测试系统的方法,也是执行对于攻击者有益的代码的方法。您的应用程序会盲目信任输入吗?如果是这样,则您的应用程序可能容易受下列情况的影响:41输输入入验证验证la、 缓冲区溢出lb、 跨站点脚本lc、 SQL插入ld、标准化l下面将详细说明这些漏洞,包括使其成为可能的原因。42缓冲区溢出l 缓冲区溢出漏洞会导致拒绝服务攻击或代码插入。拒绝服务攻击会引起进程崩溃;代码插入则会更改程序执行地址以运行攻击者插入的代码。下面的代码片段演示了缓冲区溢出漏洞的典型示例。lvoid SomeFunction(char *pszInput)llChar

25、 szBuffer10; /当不执行类型检查时,输入将直接复制到缓冲区内lstrcpy(szBuffer, pszInput);l.l43缓冲区溢出l 托管的.NET代码不容易受到此问题的影响,因为不论何时访问数组时,都会自动检查数组界限。这使得缓冲区溢出攻击的威胁对托管代码而言并不构成很大的问题。但是,当托管代码调用非托管的API或COM对象时,它仍是个要考虑的问题。l有助于防止缓冲区溢出的对策包括:44缓冲区溢出l1、执行彻底的输入验证。这是防御缓冲区溢出的第一道防线。尽管应用程序可能存在缺陷,使得期望的输入超出容器的界限,但不期望的输入仍将成为产生这种漏洞的主要原因。通过验证输入的类型、

26、长度、格式和范围来限制输入。l2、在可能的情况下,限制应用程序对非托管代码的使用,并彻底检查非托管的API,以确保输入已经过正确的验证。45缓冲区溢出l3、检查调用非托管的API的托管代码,以确保仅将合适值作为参数传递给非托管的API。l使用/GS标记来编译使用Microsoft Visual C+ 开发系统开发的代码。/GS标记将使编译器向编译代码中插入安全检查。这并非无错的解决方案或是对您特定的验证代码的替换;但是,它确实能保护您的代码免受众所周知的缓冲区溢出攻击。有关更多信息,请参阅.NETFramework产品文档,网址为:http:/ WebCast:Compiler Securit

27、y Checks:The/GS compiler switch”,网址为:http:/ 攻击者可以利用缓冲区溢出漏洞来插入代码。通过这种攻击,恶意用户可以在进程中利用未检查的缓冲区,方法是提供精心构造的输入值来覆盖程序的堆栈,并更改函数返回地址。这会使执行跳到攻击者插入的代码。l 攻击者的代码通常在进程安全上下文中结束运行。这突出了使用最低特权进程帐户的重要性。如果当前的线程正在模仿,则攻击者的代码将在线程模仿标记定义的安全上下文中结束运行。攻击者通常所做的第一件事情是调用RevertToSelf API以转换到攻击者希望具有更高特权的进程级别安全上下文。l 确保验证输入的类型和长度,特别是在

28、调用非托管的代码之前,因为非托管代码特别容易受到缓冲区溢出的影响。47跨站点脚本跨站点脚本l 当浏览器连接到受信任的网站时,XSS攻击会导致任意代码在用户浏览器中运行。此攻击以应用程序的用户而不是应用程序本身为目标,但它使用应用程序作为攻击工具。l 因为脚本代码是从受信任站点上通过浏览器下载的,所以浏览器无法知道此代码是非法的。Internet Explorer安全区域未提供任何防御。因为攻击者的代码可以访问与受信任站点相关的Cookie而且此代码存储在用户的本地计算机上,所以用户身份验证Cookie通常是攻击的目标。48跨站点脚本跨站点脚本l跨站点脚本示例l为启动攻击,攻击者必须使用户单击一

29、个精心设计的超链接,例如,通过在发送给用户的电子邮件中嵌入链接或向新闻组公告中添加恶意链接。链接指向应用程序中易受攻击的页面,该页面以HTML输出流形式将未经验证的输入发送回浏览器。例如,考虑下面两个链接。l这是一个合法链接: 如果Web应用程序提取了查询字符串,无法对其进行正确验证并使其返回浏览器,则脚本代码将在浏览器中执行。前面的示例将显示一条无害的弹出式消息。采用合适的脚本,攻击者可以轻松提取用户的身份验证cookie并将其粘贴到自己的站点,然后作为经过身份验证的用户向目标网站发出请求。l防止XSS的对策包括:50跨站点脚本跨站点脚本l1、执行彻底的输入验证。您的应用程序必须确保查询字符

30、串、表格字段和Cookie的输入对应用程序而言有效。认为所有用户输入都可能是恶意的,并筛选和清洁下游代码的上下文。验证已知有效值的所有输入,并拒绝所有其他输入。使用正则表达式来验证通过HTML表格字段、Cookie和查询字符串接收的输入数据。l2、使用HTMLEncode和URLEncode函数来对任何包含用户输入的输出进行编码。这会将可执行脚本转换为无害的HTML。51SQLSQL插插入入l SQL插入攻击利用输入验证中的漏洞来在数据库中运行任意命令。当您的应用程序使用输入来构造动态SQL语句以访问数据库时,可能出现这种攻击。如果您的代码使用的存储过程传递了包含未筛选的用户输入的字符串,则也

31、可能出现这种攻击。使用SQL插入攻击,攻击者可以在数据库中执行任意命令。如果应用程序使用越权帐户来连接到数据库,则此问题将会更加严重。在这种情况下,使用数据库服务器来运行操作系统命令是可能的,但会潜在地危及其他服务器的安全,而且还会检索、操纵和损坏数据。52SQLSQL插插入入lSQL插入示例l 当您的数据库查询中包括未经验证的用户输入时,您的应用程序可能很容易受到SQL插入攻击。特别容易受到影响的是用未筛选的用户输入构造动态SQL语句的代码。考虑以下代码:lSqlDataAdapter myCommand=new SqlDataAdapter(SELECT * FROM Users WHER

32、E UserName=+txtuid.Text+,conn);l 攻击者可以通过终止特定的SQL语句来插入SQL,方法是使用单引号字符加分号字符开始一个新命令,然后执行他们自己选择的命令。考虑下面输入到txtuid字段的字符串。53SQLSQL插插入入l;DROP TABLE Customers l这将导致以下语句提交给数据库以执行。lSELECT * FROM Users WHERE UserName=; DROP TABLE Customers -l 假定应用程序的登录具有足够的数据库权限,则此语句会删除客户表格(这也是在数据库中使用最低特权的另一个原因)。双短划线(-)表示SQL注释,用

33、来对程序员所添加的任何其他字符(例如右引号)进行注释。54SQLSQL插插入入l注意:分号实际上并非必需。SQL Server将执行由空格分开的两个命令。还可执行其他更具欺骗性的命令。将以下内容输入到txtuid字段:l OR 1=1 l建立此命令:lSELECT * FROM Users WHERE UserName=OR 1=1 l因为1=1恒成立,攻击者将检索Users表格中的每一行数据。55SQLSQL插插入入l防止SQL插入的对策包括:l1、执行彻底的输入验证。您的应用程序应在向数据库发送请求之前验证其输入。l2、将参数化的存储过程用于数据库访问,以确保不会将输入字符串误认为可执行语

34、句。如果您不能使用存储过程,那么在建立SQL命令时请使用SQL参数。l3、使用最低特权的帐户来连接数据库。56身份验证l 根据您的要求,有几种可用的身份验证机制可选。如果未能正确选择和实现身份验证机制,则攻击者会利用该机制暴露的漏洞来获取您的系统的访问权。利用身份验证机制的漏洞所构成的最大的威胁包括:l网络偷听l强力攻击l字典攻击lCookie重播攻击l凭证偷窃57网络偷听l 如果从客户端向服务器以纯文本形式传递身份验证凭证,在同一网络的主机上具有初级的网络监测软件的攻击者就可以捕捉通信并获得用户名和密码。l防止网络偷听的对策包括:l1、使用不通过网络传输密码的身份验证机制,如Kerberos

35、协议或Windows身份验证。l2、如果必须通过网络传输密码,则需确保密码已加密,或使用已加密的通讯通道,如SSL。58强力攻强力攻击击l 强力攻击依赖计算能力来解开哈希密码或其他使用了哈希和加密的机密。为减少这种危险,请使用强密码。59字典攻字典攻击击l 此攻击用于获取密码。多数密码系统不存储纯文本密码或加密的密码。它们避免使用加密的密码,因为泄漏的密钥会危及数据存储区中所有密码的安全。丢失密钥则意味着所有的密码都未通过验证。l 多数用户存储实现具有密码哈希(或摘要)。根据用户提供的密码值重新计算哈希并将其与数据库中存储的哈希值进行比较,来对用户进行身份验证。如果攻击者设法获得哈希密码列表,

36、则会使用强力攻击来破解密码哈希。60字典攻字典攻击击l 在字典攻击中,攻击者使用程序来重述字典中的所有词(或采用多种语言的多个字典)并计算每个词的哈希。生成的哈希与数据存储区中的值进行比较。可以快速破解弱密码,如“Yankees”(一个受欢迎的团队)或“Mustang”(一种受欢迎的车)。较强密码(如“?YouLlNevaFiNdMeyePasSWerd!”)被破解的可能性较小。l 注意:一旦攻击者获得了密码哈希列表,则可以脱机执行字典攻击,而且并不要求与应用程序交互。61字典攻字典攻击击l防止字典攻击的对策包括:l1、使用强密码,此强密码应该复杂,不是常规单词,且包含混用大写、小写、数字和特殊字符。l2、在用户存储区中存储不可还原的密码哈希。还要在密码哈希中包含一个Salt值(一个加密性强的随机数字)。l3、有关使用添加的Salt存储密码哈希的更多信息,请参考模块14构建安全的数据访问。62CookieCookie重播攻重播攻击击l 采用这种类型的攻击,攻击者可以使用监测软件捕捉用户的身份验证Cookie并将其重播给应用程序,以便使用虚假身份获取访问权。l防止Cookie重播的对策包括:l1、无论何时传输身份验证Cookie时,请使用提供的SSL加密通讯通道。l2、将Cookie超时设置为一个值,以在经过相对短的时间间隔后强制进行身份验证。尽管这并不能防止

温馨提示

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

评论

0/150

提交评论