CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

一个关于避免注入的想法

楼主mosangbike(莫桑比克)2006-07-03 09:32:30 在 Web 开发 / ASP 提问

1、是不是只要输入的字符,在后台程序中,不参与数据库查询操作语句中就没事了?  
   
  2、如果使用like语句实现一个内容查询的功能,输入的内容中包含单引号,是否能够被注入?? 问题点数:20、回复次数:11Top

1 楼tatty_bad(我总是出现在该出现的地方)回复于 2006-07-03 09:38:42 得分 0

第一个说法是对的,不参与数据库的任何操作,就不存在SQL注入  
  第二个则要看情况了。Top

2 楼mosangbike(莫桑比克)回复于 2006-07-03 10:03:21 得分 0

能否详细说说,第二种情况在什么样的情况下危险?Top

3 楼xuStanly(依依myLove)回复于 2006-07-03 10:48:45 得分 0

举个例子  
   
  如果你的查询语句为:  
  sql   =   "select   *   from   table1   where   username   like   '"   &   q   &   "'"  
  如果不做判断,那么当  
  q   =   "123';   exec   sp_executecmd   [expression];   select   *   from   table1   where   field1='"  
  时,你的查询语句则会变为  
  sql   =   "select   *   from   table1   where   username   like   '123';exec   sp_executecmd   ***;   select   *   from   table1   where   field1=''"  
  Top

4 楼heroooooo(学习.NET)回复于 2006-07-03 11:02:20 得分 0

第一个也很危险的,可以跨的,不过也不用担心,了解的人不算多.加个防注入很难吗??自己写个函数过滤下就可以了,免得还得设计特殊的sql语句..Top

5 楼slawdan(select 大便 from 粪池 where 蛆数<10)回复于 2006-07-03 11:04:18 得分 0

基本上把查询字串中的'替换成'',就可以了~Top

6 楼heroooooo(学习.NET)回复于 2006-07-03 11:09:05 得分 0

 
  基本上把查询字串中的'替换成'',就可以了~  
  ___________________________  
  基本上是对头的..Top

7 楼mosangbike(莫桑比克)回复于 2006-07-04 09:14:47 得分 0

基本上把查询字串中的'替换成'',就可以了~  
   
   
  如果如上述所说,那么在asp页面中传递参数的时候,是不是也不用过滤单引号,只要将一个单引号转化为2个单引号就行了?Top

8 楼yongfa365(http://www.yongfa365.com)回复于 2006-07-04 09:19:08 得分 0

'SQL防入库函数  
  Function   SafeRequest(ParaName)    
  Dim   ParaValue    
  ParaValue=request(ParaName)  
  if   ParaValue   =   ""   then  
    SafeRequest   =   ""  
    exit   function  
  end   if  
   
  '过虑非法字符    
  ParaValue   =   replace(ParaValue,"'","")    
  ParaValue   =   replace(ParaValue,"select   ","")  
  ParaValue   =   replace(ParaValue,"insert   ","")  
  ParaValue   =   replace(ParaValue,"delete   ","")  
  ParaValue   =   replace(ParaValue,"count(","")  
  ParaValue   =   replace(ParaValue,"drop   table   ","")  
  ParaValue   =   replace(ParaValue,"update   ","")  
  ParaValue   =   replace(ParaValue,"truncate   ","")  
  ParaValue   =   replace(ParaValue,"asc(","")  
  ParaValue   =   replace(ParaValue,"mid(","")  
  ParaValue   =   replace(ParaValue,"char(","")  
  ParaValue   =   replace(ParaValue,"xp_cmdshell","")  
  ParaValue   =   replace(ParaValue,"exec   master","")  
  ParaValue   =   replace(ParaValue,"net   localgroup   administrators","")  
  ParaValue   =   replace(ParaValue,"   and   ","")  
  ParaValue   =   replace(ParaValue,"net   user","")  
  ParaValue   =   replace(ParaValue,"   or   ","")  
  SafeRequest=ParaValue  
   
  if   IsNumeric(ParaValue)   =   True   then  
    SafeRequest=ParaValue  
    exit   Function  
  elseIf   Instr(LCase(ParaValue),"select   ")   >   0   or   Instr(LCase(ParaValue),"insert   ")   >   0   or   Instr(LCase(ParaValue),"delete   from")   >   0   or   Instr(LCase(ParaValue),"count(")   >   0   or   Instr(LCase(ParaValue),"drop   table")   >   0   or   Instr(LCase(ParaValue),"update   ")   >   0   or   Instr(LCase(ParaValue),"truncate   ")   >   0   or   Instr(LCase(ParaValue),"asc(")   >   0   or   Instr(LCase(ParaValue),"mid(")   >   0   or   Instr(LCase(ParaValue),"char(")   >   0   or   Instr(LCase(ParaValue),"xp_cmdshell")   >   0   or   Instr(LCase(ParaValue),"exec   master")   >   0   or   Instr(LCase(ParaValue),"net   localgroup   administrators")   >   0     or   Instr(LCase(ParaValue),"   and   ")   >   0   or   Instr(LCase(ParaValue),"net   user")   >   0   or   Instr(LCase(ParaValue),"   or   ")   >   0   then  
      Response.Write   "<script   language='javascript'>"  
      Response.Write   "alert('可疑的SQL注入请求!');"     '发现SQL注入攻击提示信息  
      Response.Write   "window.history.go(-1);"     '发现SQL注入攻击转跳网址  
      Response.Write   "<script>"  
      Response.end  
  else  
    SafeRequest=ParaValue  
  End   If  
  End   function  
   
  调用时把以前的,trim(request("username"))换成saferequest("username")就可以了Top

9 楼taolixiang(飞扬 怎么还不升级!!...... 哦 ...... 原来是要答对题才能升!)回复于 2006-07-04 10:17:02 得分 0

学习中...Top

10 楼netcs(古城童话)回复于 2006-07-04 10:26:49 得分 0

笑死我,楼上的楼上你搞笑?  
   
  你那防注入的方法,正常参数也没了Top

11 楼bclz_vs(边城)回复于 2006-07-04 15:19:33 得分 0

学习Top

相关问题

关键词

得分解答快速导航

  • 帖主:mosangbike

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo