hawker

防止"SQL的注入攻击"

SQL 语句利用

还有一种与脚本利用类似的利用,它导致恶意 SQL 语句的执行。如果应用程序提示用户输入信息并将用户的输入串联为表示 SQL 语句的字符串,则会出现这种情况。例如,应用程序可能提示输入客户姓名,目的是为了执行类似如下的语句:

"Select * From Customers where CustomerName = " & txtCustomerName.Value

但是,对数据库有所了解的恶意用户可能使用文本框输入包含客户姓名的嵌入式 SQL 语句,产生类似如下的语句:

Select * From Customers Where CustomerName = 'a' Delete From 
Customers Where CustomerName > ''

执行该查询时,就会危害数据库。
解决的方法有很多种,这里接受两种:
1,就是不要相信用户的任何输入,检查用户输入的任何字符串,过滤恶意输入,在这里我们可以过滤“delete”和“‘”,但是这种方法不能穷举所有的恶意输入。
2,摈弃上面的字符串连接方式,改用下面的方式:
select * from Customers where CustomerName=@custname

posted on 2005-05-11 18:49  杨承国  阅读(1365)  评论(1)    收藏  举报

导航