网络通信 频道

最友好的SQL注入防御方法

不知道是不是有些人给SQL注入吓怕了,把一大堆根本对系统安全没威胁的字符(比如"号,%号等)都过滤了(甚至NB联盟有些人居然也这样做),使得一些系统的User Interface极不友好,经常出现"输入特殊字符"的提示,造成用户的流失.
  
  以下是根据我一年注入经验的总结,在绝对安全的前提下,过滤得最少,最友好的防注入方法:
  
  1.数字型变量:用isNumeric()判断是否为数字
  
  2.字符型或其它类型变量:将单引号''替换成两个
  
  下面给出两个函数,用来代替ASP的Request函数,只要每处地方使用这两个函数取值,SQL注入根本没有用武之地.
  
  ''----------------------------------------------------------------
  '' 获取数字型参数
  ''----------------------------------------------------------------
  Function ReqNum ( StrName )
  
  ReqNum = Request ( StrName )
  
  if not isNumeric ( ReqNum ) then
  
  response.write "参数必须为数字型!"
  
  response.end
  
  end if
  
  End Function
  
  ''----------------------------------------------------------------
  '' 获取字符型参数
  ''----------------------------------------------------------------
  
  Function ReqStr ( StrName )
  
  ReqStr = Replace ( Request(StrName), "''", "''''" )
  
  End Function

文章转载地址:http://www.cnpaf.net/Class/hack/0610111049223819912.html

0
相关文章