免费杀毒软件,全面病毒解决方案

投递文章  投稿指南 金山毒霸非官方通告:
搜索: 您的位置毒霸首页>安全防护>数据库安全>阅读资讯:从 'or'='or' 漏洞安全检测到修复手法

从 'or'='or' 漏洞安全检测到修复手法

2008-05-07 02:38:54   来源:   作者:   【 评论:0

  实施修复,方法有很多在这里介绍两种,咱们使用第2种

  方法1: Replace过滤字符

  解决方法:查找login.asp下的<from找到下边的类似

  username=request.Form("name")

  pass=request.Form("pass")

  修改为:

  username=Replace(request.Form("name"), "’", "’’")

  pass=Replace(request.Form("pass"), "’", "’’")

  语法是屏蔽’和’’字符来达到效果.

  

  方法2:在conn.asp 内加入<!--#include file="safe.asp"-->

  注:(前提 登陆页面有<!--#include file="conn.asp"-->)

  把以下代码保存为safe.asp

  

  下面是程序代码********************************************************

  <%

Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name

Err_Message = 3

Err_Web = "safe.htm"

’出错时转向的页面

Query_Badword="’|and|select|update|chr|delete|%20from|;|insert|mid|master.|set|chr(37)|="

’在这部份定义get非法参数,使用"|"号间隔

Form_Badword="’|(|)|;|="

’在这部份定义post非法参数,使用"|"号间隔

On Error Resume Next

if request.QueryString<  Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name

  Err_Message = 3

  Err_Web = "safe.htm"

  ’出错时转向的页面

  Query_Badword="’|and|select|update|chr|delete|%20from|;|insert|mid|master.|set|chr(37)|="

  ’在这部份定义get非法参数,使用"|"号间隔

  Form_Badword="’|(|)|;|="

  ’在这部份定义post非法参数,使用"|"号间隔

  On Error Resume Next

  if request.QueryString<>"" then

  Chk_badword=split(Query_Badword,"|")

  FOR EACH Query_Name IN Request.QueryString

  for i=0 to ubound(Chk_badword)

  If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then

  Select Case Err_Message

  Case "1"

  Response.Write "<Script Language=JavaScript>alert(’传参错误!参数 "&name&" 的值中包含非法字符串!\n\n请不要在参数中出现:and update delete ; insert mid master 等非法字符!’);window.close();</Script>"

  Case "2"

  Response.Write "<Script Language=JavaScript>location.href=’"&Err_Web&"’</Script>"

  Case "3"

  Response.Write "<Script Language=JavaScript>alert(’传参错误!参数 "&name&"的值中包含非法字符串!\n\n请不要在参数中出现:and update delete ; insert mid master 等非法字符!’);location.href=’"&Err_Web&"’;</Script>"

  End Select

  Response.End

  End If

  NEXT

  NEXT

  End if

  if request.form<>"" then

  Chk_badword=split(Form_Badword,"|")

  FOR EACH name IN Request.Form

  for i=0 to ubound(Chk_badword)

  If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then

  Select Case Err_Message

  Case "1"

  Response.Write "<Script Language=JavaScript>alert(’出错了!表单 "&name&" 的值中包含非法字符串!\n\n你的非法操作已记录,请马上停止非法行为!’);window.close();</Script>"

  Case "2"

  Response.Write "<Script Language=JavaScript>location.href=’"&Err_Web&"’</Script>"

  Case "3"

  Response.Write "<Script Language=JavaScript>alert(’唐山味儿不浓 告诉您出错了!参数 "&name&"的值中包含非法字符串!\n\谢谢您光临!,请停止非法行为!’);location.href=’"&Err_Web&"’;</Script>"

  End Select

  Response.End

  End If

  NEXT

  NEXT

  end if

  %>



Tags:  
责任编辑:
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 密码: 匿名:
    评论总数:0 [ 查看全部 ] 网友评论
    关于我们 - 联系我们 - 广告服务 - 法律声明 - RSS订阅 - 网站地图 - 返回顶部 -