我的添加数据代码被注入,如何防止?

LYSSHE 2010-04-13 01:18:32
代码如下:

lys_str=myrequest(Request.Form("content"),2)
rs.addNew
Rs("title") = Request.Form("title") '标题
Rs("name") = Request.Form("userName")
Rs("email") = Request.Form("Email") '
Rs("content") = lys_str
Rs("ip")= Request.ServerVariables("REMOTE_ADDR")
Rs("zjcontent")="咨询"'问题分类
rs.update()

--------------
出现的问题:
每当我上传这个页面,不到一分钟,我的数据库中就会重复添加记录,内容是老外的色情网站。一旦注释上面的代码,就停止了。我想就应该是这个页面被注入了。
说明:myrequest 函数是检测防止SQL注入的,代码如下:

function myrequest(myvar,ParaType)
If ParaType=1 then
If not isNumeric(myvar) or myvar="" then
Response.write "<script>alert('参数错误');history.back();</script>"
Response.end
End if
Else
If myvar="" then
Response.write "<script>alert('参数错误');history.back();</script>"
Response.end
else
if instr(myvar,"'")>0 or instr(myvar,"*")>0 or instr(myvar,";")>0 or instr(myvar,"?")>0 or instr(myvar,"=")>0 or Instr(LCase(myvar),"select")>0 or Instr(LCase(myvar),"update")>0 or Instr(LCase(myvar),"delete")>0 or Instr(LCase(myvar),"insert")>0 Then
userip=Request.ServerVariables("REMOTE_ADDR")
errpage=Request.ServerVariables("URL")
useragent=Request.ServerVariables("HTTP_USER_AGENT")
end if
myvar=replace(replace(replace(myvar,"'",""),"*",""),"/","")
myvar=replace(replace(replace(myvar,"\",""),":",""),"<","")
myvar=replace(replace(replace(myvar,">",""),"?",""),"|","")
End if
end if
myrequest=myvar
end function
...全文
129 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
vgy12304 2010-04-15
  • 打赏
  • 举报
回复
直接用传递值就是最大的隐患,你还过滤个屁啊

Rs("title") = Request.Form("title") '标题
Rs("name") = Request.Form("userName")
Rs("email") = Request.Form("Email") '

dim title
title=chkpost(Request.Form("title"))

Rs("title")=title

好久不玩asp,语法有点忘了,给你段c++的,自己参考一下
function chkpost(key)
{
arr=new array();
arr={
0=>"<script>",
1=>"<iframe",
.......}; //数组里面定义要过滤的关键字

for(i=0;i<count(arr);i++)
{
if(key==arr[i])
{
return true;
}
}
return false;
}

返回true时,停止插入数据库的操作


---------------------------------------------------
判断必须是你站点的网址提交才生效
Function isSelfRefer()
Dim sHttp_Referer, sServer_Name
sHttp_Referer = CStr(Request.ServerVariables("HTTP_REFERER"))
sServer_Name = CStr(Request.ServerVariables("SERVER_NAME"))
If Mid(sHttp_Referer, 8, Len(sServer_Name)) = sServer_Name Then
IsSelfRefer = True
Else
IsSelfRefer = False
End If
End Function
如果是内部来源的页面(安全的来源)这个函数返回真,否则返回假。下面我们来进行一个调用的实例,如果是安全的来源,我们继续执行,如果不是,我们把页面重定向到首页。
if isSelfRefer() = False then
response.redirect ("/index.asp")
response.end
end if

--------------------------------------------------------
在提交页面加一个cookies/session(域限制只在你站内使用)判断,成功提交了一次后,一定时间内,禁止提交

夫人的泡泡鱼 2010-04-15
  • 打赏
  • 举报
回复
学习啊,问题出现不可怕,由高手,共同努力,继续进步,谢谢!
hillsoft 2010-04-15
  • 打赏
  • 举报
回复
学习了。。。。。
LYSSHE 2010-04-15
  • 打赏
  • 举报
回复
感谢19楼,确实存在这个问题,已经按照你的思路改了这个漏洞。
感谢23楼,你的思路确实严谨,回去完善。

这里的高人确实不少,谢谢啦。
ymqdcpy 2010-04-15
  • 打赏
  • 举报
回复
用SQL事件探查器记录一下执行语句的情况就知道了..
wubaozhang 2010-04-15
  • 打赏
  • 举报
回复
不同的IP同时提交,说明对方攻击你的时候用的是软件攻击,而软件攻击是可以不打开网页附带的图片连接的,也就是说这个时候你的SESSION("CODE")还没有生成,就是空的,那么软件攻击的时候只要不输入验证码就可以直接提交数据了,所以还是你自己的程序机制问题
wubaozhang 2010-04-15
  • 打赏
  • 举报
回复
试了一下,提交数据后直接刷新页面可以直接提交重复数据,说明你的验证码机制是可以绕过的
建议的验证方式为:
if Lcase(Trim(session("code"))=Lcase(Trim(request("code")) and Lcase(Trim(request("code"))<>"" then
'清除前次验证码
session("code")=""
else
'错误的验证数据输入
response.end
end if
LYSSHE 2010-04-14
  • 打赏
  • 举报
回复
唉,终于停止提交数据,不知道是处置得当还是那帮家伙懒得做了。
yyh84yangtao 2010-04-13
  • 打赏
  • 举报
回复
可以确定不是注入,是重复提交数据
LYSSHE 2010-04-13
  • 打赏
  • 举报
回复
回复楼上:
现在就是他一直在提交数据,搞得我的空间一天不到就塞满满的了,即便不显示也会盛满我的空间了。
我已经添加验证码了,可是好像不起作用啊,照样追加数据。
anjing5566 2010-04-13
  • 打赏
  • 举报
回复
1,做好来源判断
2,检测递交的内容是否合法(记录IP和过滤Sql字符,过滤垃圾字符等等)
3,内容审核后再显示
LYSSHE 2010-04-13
  • 打赏
  • 举报
回复
高人分析一下:
我现在从后台数据库发现,IP地址都是捷克,在五分钟之内插入21条记录,这个五分钟是我开通上传功能的代码的一瞬间开始计算。

IP分别为:91.207.4.210 91.207.4.242 91.207.6.162

这样的情况,如何避免?
这是本人做的一个小站,就是这个页面被攻击的。(现在已经被迫关闭数据提交)
http://www.dincool.cn/qna.asp
LYSSHE 2010-04-13
  • 打赏
  • 举报
回复
我感觉不是这样,可能是哪里被挂马了。
我上传刚刚完成,立马有十来条记录上传。
超级郁闷,不知道怎么找出这个马。
bing475879749 2010-04-13
  • 打赏
  • 举报
回复
重复提交数据,汗一下,不是注入
kaifadi 2010-04-13
  • 打赏
  • 举报
回复
呵呵,你找的验证码,估计是没有改过吧,

估计那个人对验证码非常了解!加了验证也能绕过去!除非你自己会改验证,想一套自己的验证方案,不容易被对方猜到的!
LYSSHE 2010-04-13
  • 打赏
  • 举报
回复
超级郁闷,加了验证码还是一样。
在我上传上去的第一时间就添加了五条记录。
神啊,技不如人啊。
y1260405289 2010-04-13
  • 打赏
  • 举报
回复
wubaozhang 2010-04-13
  • 打赏
  • 举报
回复
这个不是注入问题,是数据重复提交问题
随便下个什么源代码里边就有验证码图片程序,都是独立的,你自己调用就是了,还伸什么手啊
LYSSHE 2010-04-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dogfish 的回复:]

发帖子的时候,加个验证码。
[/Quote]
兄弟说的对,现在所有的地方发帖子几乎都要求验证码了。
现在我想找个获取验证码图片的程序,哪位有没有现成的。
yan11cn 2010-04-13
  • 打赏
  • 举报
回复
做好过滤,然后判断表单来源
加载更多回复(5)

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧