sql注入防御
A. 怎样利用instr()函数防止SQL注入攻击
学asp一段时间,面临SQL注入攻击问题,需利用instr()函数预防。instr()函数用于查找字符串中特定字符或字符串首次出现的位置。具体代码如下:
If instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then response.redirect "index.asp"
instr()函数语法如下:
InStr([start, ]string1, string2[, compare])
该函数参数包括:
- start:可选,设置搜索开始位置,默认从第一个字符开始。若为Null,将出现错误。必须有compare参数时提供。
- string1:必选,搜索的字符串表达式。
- string2:必选,要搜索的字符串表达式。
- compare:可选,指示比较类型,默认为二进制比较。值为:
- vbBinaryCompare:0,执行二进制比较。
- vbTextCompare:1,执行文本比较。
instr()函数返回值如下:
- 返回字符串在另一个字符串中首次出现的位置。
- 若未找到匹配字符串,返回0。
- 若参数为Null,返回Null。
示例使用instr()查找字符串:
Dim SearchString, SearchChar, MyPos
SearchString = "XXpXXpXXPXXP" '要搜索的字符串
SearchChar = "P" '搜索字符
MyPos = instr(4, SearchString, SearchChar, 1) '文本比较从第四个字符开始,返回6
MyPos = instr(1, SearchString, SearchChar, 0) '二进制比较从第一个字符开始,返回9
MyPos = instr(SearchString, SearchChar) '默认二进制比较,返回9
MyPos = instr(1, SearchString, "W") '二进制比较从第一个字符开始,返回0(未找到)
instr()函数主要用于检查用户输入中是否包含特定字符或字符串,如空格、单引号等。若instr(Request("id")," ")>0或instr(Request("id"),"'")>0,则可能遭受SQL注入攻击。通过在代码中添加instr()函数,可以有效防止攻击。
例如:
If instr(Request("id")," ")>0 or instr(Request("id"),"'")>0 then response.redirect "index.asp"
这段代码检查了用户输入中是否包含空格或单引号,若存在,则直接重定向到"index.asp",避免SQL注入攻击。这种方法简单有效,无需在检查列表中添加所有可能的攻击字符。只需确保检查了关键字符,如空格、单引号、分号等,即可有效防御SQL注入。
总结:利用instr()函数,根据输入字符串中特定字符的出现情况,可以有效防止SQL注入攻击。通过简单检查空格和单引号的出现,即可实现基本的安全防御。这种方法适用于预防基础的SQL注入尝试,确保代码安全运行。