| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 802 人关注过本帖
标题:[求助]为什么我在后台添加内容只要有符号就不行
取消只看楼主 加入收藏
云南视窗
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2005-11-26
收藏
 问题点数:0 回复次数:3 
[求助]为什么我在后台添加内容只要有符号就不行
大家好,首先感谢您们浏览我的问题。
我是才开始学习asp的,很多问题
最近我遇到一个问题很头痛。就是在后台添加东西如新闻。我测试了感觉只要我的内容里边含有一些符号,比如% ,* ,-等的符号,那就一定提示下边的错误,我想是否是防 sql注入的代码有问题。但看了我们自己的网站后,觉得原来我们的网站的防注入其中也有类似写法啊,所以很是头痛,请大家帮我看看。

错误提示如下:

Microsoft VBScript 编译器错误 错误 '800a03f6'

缺少 'End'

/iisHelp/common/500-100.asp,行242

Microsoft VBScript 运行时错误 错误 '800a01a8'

缺少对象: 'killSqlconn'

/yn7cai/admin/conn.asp,行26


但在其他时候却都是正常的,这种错误只在管理员后台添加内容时候有部分符号才会出现。

这段代码是:(其中红色的就是行26了)

dim conn,connstr,db,rs,rs_s,rs_s1
db="../dsa/dsa.asa"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
conn.Open connstr


'--------定义部份------------------
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr,Kill_IP,WriteSql
'自定义需要过滤的字串,用 "|" 分隔
Fy_In = "'|;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
Kill_IP=True
WriteSql=True
'----------------------------------


Fy_Inf = split(Fy_In,"|")
'--------POST部份------------------
If Request.Form<>"" Then
For Each Fy_Post In Request.Form
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.Form(Fy_Post)),Fy_Inf(Fy_Xh))<>0 Then
If WriteSql=True Then
killSqlconn.Execute("insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values('"&Request.ServerVariables("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','POST','"&Fy_Post&"','"&replace(Request.Form(Fy_Post),"'","''")&"')")
killSqlconn.close
Set killSqlconn = Nothing
End If
Response.Write "<script language=JavaScript>alert('SQL通用防注入系统提示你↓\n\n请不要在参数中包含非法字符尝试注入!\n\nHttp://www.kunyyy.Com 系统版本:ASP版\n\nBy:kunyyy');</script>"
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:POST<br>"
Response.Write "提交参数:"&Fy_Post&"<br>"
Response.Write "提交数据:"&Request.Form(Fy_Post)
Response.End
End If
Next
Next
End If
'----------------------------------

'--------GET部份-------------------
If Request.QueryString<>"" Then
For Each Fy_Get In Request.QueryString
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))<>0 Then
If WriteSql=True Then
killSqlconn.Execute("insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values('"&Request.ServerVariables("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','GET','"&Fy_Get&"','"&replace(Request.QueryString(Fy_Get),"'","''")&"')")
killSqlconn.close
Set killSqlconn = Nothing
End If
Response.Write "<script language=JavaScript>alert('SQL通用防注入系统提示你↓\n\n请不要在参数中包含非法字符尝试注入!\n\nHttp://www.kunyyy.Com 系统版本:ASP版\n\nBy:kunyyy');</script>"
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:GET<br>"
Response.Write "提交参数:"&Fy_Get&"<br>"
Response.Write "提交数据:"&Request.QueryString(Fy_Get)
Response.End
End If
Next
Next
End If

'post过滤sql注入代防范及HTML防护开始
function nosql(str)
if isnull(str) then
str = ""
exit function
end if
str=trim(str)
str=replace(str,"&","&amp;") '&
str=replace(str,";","&#59;") '分号
str=replace(str,"'","&#39;") '单引号
str=replace(str,"""","&quot;") '双引号
str=replace(str,"chr(9)","&nbsp;") '空格
str=replace(str,"chr(10)","<br>") '回车
str=replace(str,"chr(13)","<br>") '回车
str=replace(str,"chr(32)","&nbsp;") '空格
str=replace(str,"chr(34)","&quot;") '双引号
str=replace(str,"chr(39)","&#39;") '单引号
str=Replace(str, "script", "&#115cript")'script
str=replace(str,"<","&lt;") '左<
str=replace(str,">","&gt;") '右>
str=replace(str,"(","&#40;") '左(
str=replace(str,")","&#41;") '右)
str=replace(str,"*","&#42;") '*
str=replace(str,"--","&#45;&#45;") 'SQL注释符
nosql=str
end function%>

[此贴子已经被作者于2005-12-16 3:26:07编辑过]

搜索更多相关主题的帖子: 后台 符号 
2005-12-16 03:25
云南视窗
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2005-11-26
收藏
得分:0 
好的,谢谢哦
2005-12-16 15:11
云南视窗
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2005-11-26
收藏
得分:0 
以下是引用google在2005-12-16 7:40:00的发言:
把管理员要添加的内容先用你的NOSQL函数过滤不可以吗?

请问怎么使用 nosql函数过滤啊 ?谢谢各位了。请各位帮忙啊

2005-12-16 15:17
云南视窗
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2005-11-26
收藏
得分:0 
以下是引用rainic在2005-12-16 15:17:00的发言:
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
conn.Open connstr

''这里是conn

killSqlconn.Execute("insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values('"&Request.ServerVariables("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','POST','"&Fy_Post&"','"&replace(Request.Form(Fy_Post),"'","''")&"')")

而这里却是:killSqlconn

谢谢你,我改成 conn后倒是可以不再提示 了,但是继续出现 sql非法注入,并记录了。我想让它不再记录管理员添加的内容,不知道该怎么来操作。

2005-12-16 15:21
快速回复:[求助]为什么我在后台添加内容只要有符号就不行
数据加载中...
 
   



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

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