一聚教程网:一个值得你收藏的教程网站

热门教程

数据验证之特殊字符处理

时间:2022-06-30 10:45:27 编辑:袖梨 来源:一聚教程网

 一定要对用户可能输入的诸如引号,尖括号等特殊字符给予足够重视,它们可能引发严重的安全问题。SQL注入的基本手法之一,就是利用对单引号未加过滤的安全漏洞。
      用户的输入无非两个用途:对数据库操作或显示在页面上,下面分别对这两种情况下特殊字符的处理加以说明。
      1. 对数据库操作
      用户输入的数据用于对数据库进行操作时,又分为两种情况,一是进行写库操作,二是作为查询条件。
      1.1 写库操作
      (insert及update都视为写库操作,这果以insert为例说明,update的处理相同)
      一般采用insert语句或AddNew方法两种方式进行写库操作,我们先来看insert语句:
     
      DIM username,sqlstr
      username = trim(Request.Form("uname"))
      sqlstr = "insert into [userinfo] (username) values ('"& username &"')"
      以SQL Server为例,使用这种方式写库,如果username中含用单引号('),会出错。使用下面的自定义函数,可以将单引号进行转换:
      Rem 转换SQL非法字符
      function SQLEncode(fString)
     if isnull(fString) then
         SQLEncode = ""
         exit function
     end if
     SQLEncode=replace(fString,"'","''")
      end function
      以上函数将一个单引号转换为两个连续的单引号,数据库能够接受,并以一个单引号写入。SQL语句改为:
      sqlstr = "insert into [userinfo] (username) values ('"& SQLEncode(username) &"')"
      再来看AddNew方法:
      DIM username
      username = trim(Request.Form("uname"))

热门栏目