| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 563 人关注过本帖
标题:安全过滤函数SafeCheck怎么用?
只看楼主 加入收藏
zcnvnv
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-7-8
结帖率:100%
收藏
 问题点数:0 回复次数:2 
安全过滤函数SafeCheck怎么用?
网上找到一个SafeCheck函数,但是不知道怎么用.知道的说一下,谢谢.

程序代码:
<%
'作用:安全字符串检测函数
'名字:SafeCheck
'参数:CheckString,CheckType,CheckLength
'说明:
'Checkstring待检测字符串:任意字符.
'CheckType检测类型0正常短字符1数字2日期3金钱4编码HTML5解码HTML6登录字符串7防攻击检测
'CheckLength检测类型长度:类型为int,当为金钱时为小数点的位置
'返回值:如果通过检测,返回正确字符串,
'如果未通过则返回错误代码SYSTEM_ERROR|ERROR_CODE
'Script Writen by :SnowDu(杜雪.NET)

'-------------------------------------------
function SafeCheck(CheckString,CheckType,CheckLength)
On Error Resume Next
ErrorRoot="SYSTEM_ERROR|"
if checkString="" then
SafeCheck=ErrorRoot&"00001"
exit function
end if

CheckString=Replace(CheckString,"'","'")
select case CheckType
case 0
CheckString=trim(CheckString)
SafeCheck=Left(CheckString,CheckLength)

case 1
if not isnumberic(CheckString) then
SafeCheck=ErrorRoot&"00002"
exit function
else
SafeCheck=Left(CheckString,CheckLength)
end if

case 2
tempVar=IsDate(CheckString)
if Not TempVar then
SafeCheck=ErrorRoot&"00003"
exit function
else
select case CheckLength
case 0
SafeCheck=FormatDateTime(CheckString,vbShortDate)
case 1
SafeCheck=FormatDateTime(CheckString,vbLongDate)
case 2
SafeCheck=CheckString
end select
end if

case 3
tempVar=FormatCurrency(CheckString,0)
if Err then
SafeCheck=ErrorRoot&"00004"
exit function
else
SafeCheck=FormatCurrency(CheckString,CheckLength)
end if

case 4
sTemp = CheckString
If IsNull(sTemp) = True Then
SafeCheck=ErrorRoot&"00005"
Exit Function
End If
sTemp = Replace(sTemp, "&", "&")
sTemp = Replace(sTemp, "<", "<")
sTemp = Replace(sTemp, ">", ">")
sTemp = Replace(sTemp, Chr(34), """)
sTemp = Replace(sTemp, Chr(10), "<br>")
SafeCheck = Left(sTemp,CheckLength)

case 5
sTemp = CheckString
If IsNull(sTemp) = True Then
SafeCheck=ErrorRoot&"00006"
Exit Function
End If
sTemp = Replace(sTemp, "&", "&")
sTemp = Replace(sTemp, "<", "<")
sTemp = Replace(sTemp, ">", ">")
sTemp = Replace(sTemp, """, Chr(34))
sTemp = Replace(sTemp, "<br>",Chr(10))
SafeCheck = Left(sTemp,CheckLength)

case 6
s_BadStr = "'  &<>?%,;:()`~!@#$^*{}[]|+-=" & Chr(34) & Chr(9) & Chr(32)
n = Len(s_BadStr)
IsSafeStr = True
For i = 1 To n
If Instr(CheckString, Mid(s_BadStr, i, 1)) > 0 Then
IsSafeStr = False
End If
Next
if IsSafeStr then
SafeCheck=left(CheckString,CheckLength)
else
SafeCheck=ErrorRoot&"00007"
Exit Function
end if

case 7
s_Filter="net user|xp_cmdshell|/add|select|count|asc|char|mid|'|""|"
S_Filter=S_Filter&"insert|delete|drop|truncate|from|%|declare|-"
S_Filters=split(S_Filter,"|")
isFound=false
for i=0 to ubound(S_Filters)-1
if Instr(lcase(CheckString),lcase(S_Filters(i)))<>0 then
isFound=true
exit for
end if
next
if isFound then
SafeCheck=ErrorRoot&"00008"
Exit Function
else
SafeCheck=left(CheckString,CheckLength)
end if
end select
end function
%>


[[it] 本帖最后由 zcnvnv 于 2008-10-22 16:21 编辑 [/it]]
搜索更多相关主题的帖子: SafeCheck 函数 
2008-10-22 16:18
anlige
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:401
专家分:0
注 册:2006-11-3
收藏
得分:0 
<%
'作用:安全字符串检测函数
'名字:SafeCheck
'参数:CheckString,CheckType,CheckLength
'说明:
'Checkstring待检测字符串:任意字符.
'CheckType检测类型0正常短字符1数字2日期3金钱4编码HTML5解码HTML6登录字符串7防攻击检测
'CheckLength检测类型长度:类型为int,当为金钱时为小数点的位置
'返回值:如果通过检测,返回正确字符串,
'如果未通过则返回错误代码SYSTEM_ERROR|ERROR_CODE

这里已经说的很明确了啊~~~~~

http://www.
zhanghuiguoanlige@
2008-10-22 16:28
zcnvnv
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2008-7-8
收藏
得分:0 
语文没学好吧

我的使用代码:
message=SafeCheck(request.form("message"),4,10000)

不知道第三个参数是不是指长度.

对于用户输入第二个参数用第4个case过滤.

这样做对吗?

但是我自己随便输入点sql句子测试,除了问题.

输入:
asd')") and select * from article where id=1

然后提交.

却给我返回了当前页面的sql语句代码
程序代码:
<%
'添加留言. 
sql="select id from Message order by id desc" 
set rs=server.createobject("adodb.recordset") 
rs.open sql,conn,1,3 
if rs.bof and rs.eof then 
id=1 
else 
id=rs("id")+1 
end if 
conn.Execute("insert into Message ([id],[user],[message],[date],[time]) values ('"&id&"','"&user&"','"&message&"','"&date&"','"&time&"')") 
%>


到底怎么过滤才能安全啊.
我的博客被人检测了,幸好是友情检测.
2008-10-22 16:42
快速回复:安全过滤函数SafeCheck怎么用?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039729 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved