| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1488 人关注过本帖
标题:[求助]如何屏蔽非法字符啊??
只看楼主 加入收藏
caor1987
Rank: 1
等 级:新手上路
帖 子:228
专家分:0
注 册:2006-10-15
收藏
 问题点数:0 回复次数:6 
[求助]如何屏蔽非法字符啊??
求救,,ASP如何屏蔽非法字符啊??
搜索更多相关主题的帖子: 字符 
2007-03-02 09:13
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

<html>
<head>
<title>屏蔽非法字符</title>
</head>
<body>
<%
Dim TStr
TStr="abcdef&g"
Response.Write "替换前的字符串"&TStr
TStr=Replace(TStr,"&","")
'Replace函数
'参数1,原始字符串
'参数2,要替换的子字符串
'参数3,替换后的子字符串
'返回值,替换后的整个字符串
Response.Write "替换后的字符串"&TStr
%>
</body>
</html>

2007-03-02 11:02
caor1987
Rank: 1
等 级:新手上路
帖 子:228
专家分:0
注 册:2006-10-15
收藏
得分:0 
这只屏蔽了&amp;,有那么多特殊符号,不会要一个一个写吧??
2007-03-02 13:28
cdwyj
Rank: 1
等 级:新手上路
威 望:1
帖 子:127
专家分:0
注 册:2007-2-21
收藏
得分:0 

不是每个人都喜欢研究的…… 呵呵

把这段代码写成一个文件,include以后再调用HTMLENCODE函数就行了
<%
function htmlencode(str)'滤出一些非法和无效的代码,安全性和UBB就在这里完成
dim result
dim l
if isNULL(str) then
htmlencode=""
exit function
end if
l=len(str)
result=""
dim i
for i = 1 to l
select case mid(str,i,1)'依次取出1个字符来进行检查。
case "<"
result=result+"&lt;"
case ">"
result=result+"&gt;"
case chr(13)
result=result+"<br>"
case chr(34)
result=result+"&quot;"
case "&"
result=result+"&amp;"
case chr(32)
'result=result+"&nbsp;"
if i+1<=l and i-1>0 then
if mid(str,i+1,1)=chr(32) or mid(str,i+1,1)=chr(9) or mid(str,i-1,1)=chr(32) or mid(str,i-1,1)=chr(9) then
result=result+"&nbsp;"
else
result=result+" "
end if
else
result=result+"&nbsp;"
end if
case chr(9)
result=result+" "
case else
result=result+mid(str,i,1)
end select
next
htmlencode=result
end function

function sustainhtml(str)
dim result
dim l
if isNULL(str) then
sustainhtml=""
exit function
end if
l=len(str)
result=""
dim i
for i = 1 to l
select case mid(str,i,1)
case chr(13)
result=result+"<br>"
case chr(34)
result=result+"&quot;"
case chr(32)
'result=result+"&nbsp;"
if i+1<=l and i-1>0 then
if mid(str,i+1,1)=chr(32) or mid(str,i+1,1)=chr(9) or mid(str,i-1,1)=chr(32) or mid(str,i-1,1)=chr(9) then
result=result+"&nbsp;"
else
result=result+" "
end if
else
result=result+"&nbsp;"
end if
case "&"
result=result+"&amp;"
case chr(9)
result=result+" "
case else
result=result+mid(str,i,1)
end select
next
sustainhtml=result
end function

' 检查sql字符串中是否有单引号,有则进行转化
function CheckStr(str)
dim tstr,l,i,ch
l=len(str)
for i=1 to l
ch=mid(str,i,1)
if ch="'" then
tstr=tstr+"'"
end if
tstr=tstr+ch
next
CheckStr=tstr
end function


function IsValidEmail(email)

dim names, name, i, c

'Check for valid syntax in an email address.
'检查邮箱的字符串是否合法

IsValidEmail = true
names = Split(email, "@")
if UBound(names) <> 1 then
IsValidEmail = false
exit function
end if
for each name in names
if Len(name) <= 0 then
IsValidEmail = false
exit function
end if
for i = 1 to Len(name)
c = Lcase(Mid(name, i, 1))
if InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 and not IsNumeric(c) then
IsValidEmail = false
exit function
end if
next
if Left(name, 1) = "." or Right(name, 1) = "." then
IsValidEmail = false
exit function
end if
next
if InStr(names(1), ".") <= 0 then
IsValidEmail = false
exit function
end if
i = Len(names(1)) - InStrRev(names(1), ".")
if i <> 2 and i <> 3 then
IsValidEmail = false
exit function
end if
if InStr(email, "..") > 0 then
IsValidEmail = false
end if

end function

%>


2007-03-02 15:15
zfjyyzycl
Rank: 2
等 级:论坛游民
帖 子:239
专家分:10
注 册:2006-4-15
收藏
得分:0 
就是这个方法,还有一点也许说了是多余,但是也可能有人不注意,一定要在客户提交的时候检查,将非法字符屏蔽掉,直接替换成合法字符,这个注意事项对于发表文章和回复帖子时候有用,避免了每次显示信息时,每次进行检查替换。
2007-03-02 16:41
做人很低调
Rank: 5Rank: 5
等 级:贵宾
威 望:18
帖 子:1268
专家分:0
注 册:2006-8-2
收藏
得分:0 

简单的防止SQL注入的方法 自己研究一下吧

====================方法一:Function CheckStr(str)=====================================

<%
'需要调用返回True则字符串中包含非法字符
Function CheckStr(str)
If Replace(str," ","") = "" Then
Exit Function
End If
Dim nothis,istr
nothis="select|insert|delete|updata|exec|count|'|*|%"
nothis=Split(nothis,"|")
For istr = 0 To Ubound(nothis)
If Instr(str,nothis(istr))<>0 Then
CheckStr = True
Exit Function
End If
Next
CheckStr = False
End Function
%>

====================方法二:Sub CheckStrPost 和 Sub CheckStrGet=========================

<%
'Call此Sub
Sub CheckStrPost
Dim nothis,istr,jstr,post
nothis = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master"
nothis = Split(nothis,"|")
If Request.Form <> "" Then
post = Int(Ubound(Split(Request.Form,"&"))+1)
For istr = 1 To post
For jstr = 0 To Ubound(nothis)
If Instr(Request.Form(istr),nothis(jstr)) <> 0 Then
Response.Write("请不要输入非法字符尝试注入!")
Response.End()
End If
Next
Next
End If
End Sub
%>

<%
Sub CheckStrGet
Dim nothis,istr,jstr,tget
nothis = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master"
nothis = Split(nothis,"|")
If Request.QueryString <> "" Then
tget = Int(Ubound(Split(Request.QueryString,"&"))+1)
For istr = 1 To tget
For jstr = 0 To Ubound(nothis)
If Instr(Request.QueryString(istr),nothis(jstr)) <> 0 Then
Response.Write("请不要输入非法字符尝试注入!")
Response.End()
End If
Next
Next
End If
End Sub
%>


其实我很低调,只是你不知道...
2007-03-03 08:49
caor1987
Rank: 1
等 级:新手上路
帖 子:228
专家分:0
注 册:2006-10-15
收藏
得分:0 
太感谢各位了,,谢谢~~~~
2007-03-03 09:54
快速回复:[求助]如何屏蔽非法字符啊??
数据加载中...
 
   



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

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