WEB开发网
开发学院数据库MSSQL Server SQL概述及在网络安全中的应用(上) 阅读

SQL概述及在网络安全中的应用(上)

 2007-05-19 09:43:22 来源:WEB开发网   
核心提示:1.网络应用和SQL注射1.1概述有些网络数据库没有过滤客户提供的数据中可能有害的字符,SQL注射就是利用插入有害字符进行攻击的技术,SQL概述及在网络安全中的应用(上),尽管非常容易防范,但因特网上仍然有惊人数量的存储系统容易受到这种攻击,而且那个地方是唯一的,你永远都不能确定是哪里,这篇文章的目的是指导专业安全组织

1.网络应用和SQL注射

1.1概述

有些网络数据库没有过滤客户提供的数据中可能有害的字符,SQL注射就是利用插入有害字符进行攻击的技术。尽管非常容易防范,但因特网上仍然有惊人数量的存储系统容易受到这种攻击。这篇文章的目的是指导专业安全组织了解这种技术,并告诉他们正确的,用来防范SQL注射的办法,以及处理各种常见的,由于非法输入引起的问题.

1.2背景

在读这篇文章之前,你应该对数据库如何工作,以及SQL如何被用来访问数据库有一些基础的了解。我建议您阅读eXtropia.com的文章“Introduction to Databases for WebDevelopers”。

1.3字符编码

在大多数的网络浏览器中,标点符号和许多其它符号在用于一个网络请求前需要把URL编码,以便被适当地编译(interpret)。在本文中的例子和截图中我使用了固定的ASCII字符以保证最大的可读性。然而,在实际应用中,你需要在HTTP请求中用%25来代替百分号(%),用%2B来代替加号(+)等等。

2.易损性的测试(Testing for vulnerability)

2.1综合测试

彻底地检测一个网络请求是否容易被SQL注射比一个可能的猜测(might guess)需要耗费更多的精力。当你把一个单引号放进一个脚本的第一个参数值时,服务器返回一个空白的网页,上面除了ODBC错误以外什么都没有.显然这种情况直接反映出web程序存在漏洞,但通常都不是这样的,如果你没有注意细节的话,很容易忽略掉一个看上去完美,其实很脆弱的脚本。

服务器上每一个脚本中的每一个参数都应该被检测。开发者和开发组织之间可能很不一致。设计脚本A的程序员也许和脚本B的开发毫无关系,所以,其中一个也许对SQL注射免疫,而另外一个可能不会。事实上,设计脚本A里的函数A的程序员也许和脚本A里的函数B的开发毫无关系,所以脚本A里的一个参数也许对SQL注射是脆弱的,而另外一个参数却不一定,即使整个网络请求是由一个程序员来构想,设计,编写及测试的,在成千上万的脚本中的参数中,由于某种原因,设计者忘了检验某个地方的数据,所以仍有可能存在一个脆弱的参数,而且那个地方是唯一的,你永远都不能确定是哪里,所以必须测试所有的东西。

1 2 3 4 5 6  下一页

Tags:SQL 概述 网络安全

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接