最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
数据验证之特殊字符处理
时间: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"))
用户的输入无非两个用途:对数据库操作或显示在页面上,下面分别对这两种情况下特殊字符的处理加以说明。
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"))
相关文章
- 哈利波特魔法觉醒拼图寻宝格兰芬多塔楼线索位置攻略 08-01
- 金铲铲之战中秋挑战活动怎么玩?中秋双人大作战玩法介绍 08-01
- 《魔法少女小圆MagiaExedra》月卡可获取奖励一览 08-01
- 《地下城堡4》军团战通关攻略 08-01
- 《地下城堡4》惊悸荒野小屋解密攻略 08-01
- 币圈三大主流交易所详解 币安 Coinbase 火币对比分析 08-01