学院首页>网络编程>SQL Server>[Sql server]加密技术和SQL注入攻击

[Sql server]加密技术和SQL注入攻击

作者:unknown 来源:ZDNet 添加时间:2006-5-26 10:02:15

加密术中缺少什么?

  你可以注意到在这个列表中缺少一些被加密的东西:你表格中的数据。在你存储数据之前,SQL Server不会提供任何内置的工具来加密你的数据。如果你需要保护存储在SQL Server上的数据,我们给你两条建议:第一,你可以利用GRANT 和DENY关键字来控制你想哪个用户可以在SQL Server中读取的数据。

  第二.如果你真的想对数据加密,不要设法加密码。你可以利用被测试过的商业产品的算法。

  SQL 注入攻击

  SQL 注入攻击是一个常规性的攻击,它可以允许一些不法用户检索你的数据,改变服务器的设置,或者在你不小心的时候黑掉你的服务器。SQL 注入攻击不是SQL Server问题,而是不适当的程序。如果你想要运行这些程序的话,你必须明白这冒着一定的风险。

  测点定位弱点

  SQL 注入的脆弱点发生在程序开发员构造一个WHERE 子句伴随着用户的输入的时候。比如,一个简单的ASP程序允许用户输入一个顾客的ID然后检索公司的全部人员的名字,如果顾客ID如果作为ASP页面的请求串的一部分返回,那么开发员可以编写下面的代码获得数据:

strConn = "Provider=SQLOLEDB;Data Source=(local);" & _
 "Database=Northwind;Integrated Security=SSPI"
Set cnn = Server.CreateObject("ADODB.Connection")
cnn.Open  strConn
strQuery = "SELECT ContactName FROM Customers " & _
 “WHERE CustomerID = '" & Request.Form("CustID") & "'"
Set rstResults = cnn.Execute(strQuery)
Response.Write(rstResults.Fields("ContactName").Value)

  现在你知道什么地方有问题了吧?如果用户知道一个用户的ID,他可以通过检索来获得全部的相应的名字。现在明白了?

  获得额外的数据

  当然,对于一个攻击程序,尽管它不知道任何顾客的ID,甚至不用去猜,它也可以获得数据。为了完成这个工作,它将下面的文本输入到应用程序调用顾客ID的textbox中:

customer ID:
'UNION ALL SELECT ContactName FROM Customers
 WHERE CustomerID <>'

第 2 页,共 2 页 [1] [2]
站内搜索