CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

关于sql的注入式攻击,大家说说都有哪些防范措施

楼主newhandtoo(停留卡)2004-09-03 22:29:53 在 Web 开发 / ASP 提问

谢谢 问题点数:0、回复次数:8Top

1 楼setcdq9801(蓝鸽@我是你.net)回复于 2004-09-03 22:34:03 得分 0

1、判断是不是数字  
  2、过滤特殊字符  
  简单的就说这些,具体的要程序本身再说了Top

2 楼aoenzh(独孤大虾)回复于 2004-09-03 22:45:29 得分 0

'or   1=1   '  
  一般将'   "   <   >这些特殊字符替换掉就可了Top

3 楼qiozi(【悟】.欢希欢南换)回复于 2004-09-04 00:11:57 得分 0

注意'号过滤,就可以防大部份了Top

4 楼jinhong618(BCB水手)回复于 2004-09-04 00:26:59 得分 0

检测如果有'   "   <   >就告诉他输入错误Top

5 楼bingzhihan(冰之寒)回复于 2004-09-04 00:28:09 得分 0

写个函数,把所有的request换成他  
  Function   SafeRequest(ParaName,ParaType)  
                '---   传入参数   ---  
                'ParaName:参数名称-字符型  
                'ParaType:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符)  
   
                Dim   ParaValue  
        SafeRequest=""  
                ParaValue=Request(ParaName)  
        if   ParaValue=""   then   exit   function  
                If   ParaType=1   then  
                              If   not   isNumeric(ParaValue)   then  
                                            response.Write("<script   language='javascript'>   alert('参数类型不正确!');history.back()</script>")  
                                            Response.end  
                              End   if  
                Else  
                              ParaValue=replace(ParaValue,"'","''")  
                End   if  
                SafeRequest=ParaValue  
  End   functionTop

6 楼dayanmao(大眼猫)回复于 2004-09-04 08:55:33 得分 0

兄弟们请注意:isNumeric("2d3")   试试结果??Top

7 楼lgr0727(特立独行的猪)回复于 2004-09-04 09:00:23 得分 0

SQL   Server安全-加密术和SQL注入攻击   [ZDNet   China]  
   
   
  今天让我们来看看在SQL   Server,加密术和SQL   注入攻击。  
   
    SQL   Server上的加密术  
     
     
  SQL   Server上内置了加密术用来保护各种类型的敏感数据。在很多时候,这个加密术对于你来说是完全透明的;当数据被存储时候被加密,它们被使用的时候就会自动加密。在其他的情况下,你可以选择数据是否要被加密。SQL   Server可以加密下列这些组件:  
   
  ·密码  
   
  ·存储过程,视图,触发器,用户自定义函数,默认值,和规则。  
   
  ·在服务器和用户之间传输的数据  
   
  密码加密术  
  SQL   Server自动将你分配给登陆和应用角色的密码加密。尽管当你可以从主数据库中直接察看系统表格而不需要密码。你不能给对这种情况作出任何修改,事实上,你根本不能破坏它。  
   
  定义加密术  
  在有些时候,如果对对象进行加密是防止将一些信息分享给他人。例如,一个存储进程可能包含所有者的商业信息,但是这个信息不能和让其他的人看到,即使他们公开的系统表格并可以看到对象的定义。这就是为什么SQL   Server允许你在创建一个对象的时候进行加密。为了加密一个存储进程,使用下面形式的CREAT   PROCEDURE   语句:  
   
  CREATE   PROCEDURE   procedurename   [;number]  
  [@parameter   datatype  
  [VARYING][   =   defaultvalue][OUTPUT]]  
  [,   …]  
  [WITH   RECOMPILE   |   ENCRYPTION   |   RECOMPILE,   ENCRYPTION]  
   
  我们关心的仅仅是可选的WITH参数。你可以详细说明ARECOMPILE或者ENCRYPTION,或者你可以同时说明它们。ENCRYPTION关键字保护SQL   Server它不被公开在进程中。结果,如果ENCRYPTION在激活的时候系统存储进程sp_helptext就会被忽视,这个存储进程将被存储在用户创建进程的文本中。如果你不想要加密,你可以使用ALTER   PROCEDURE,忽略WITH   ENCRYPTION子句来重新创建一个进程。  
   
  为了能够使用加密术。用户和服务器都应该使用TCP/IP   NetworkLibraries用来连接。运行适当的Network   Utility和检查Force   protocol   encryption,看下表,用户和服务器之间的连接将不会被加密。  
   
   
   
   
          加密也不能完全自由。当连接确定后,要继续其他的构造,并且用户和服务器必须运行代码来解释加密和解释的包裹。这里将需要一些开销并且当在编译码的时候会使进程慢下来。如果网络包裹在你控制范围之外,使用这种做法是非常好的。  
  加密术中缺少什么?  
  你可以注意到在这个列表中缺少一些被加密的东西:你表格中的数据。在你存储数据之前,SQL   Server不会提供任何内置的工具来加密你的数据。如果你需要保护存储在SQL   Server上的数据,我们给你两条建议:第一,你可以利用GRANT   和DENY关键字来控制你想哪个用户可以在SQL   Server中读取的数据。  
   
     
     
  第二.如果你真的想对数据加密,不要设法加密码。你可以利用被测试过的商业产品的算法。  
   
  SQL   注入攻击  
  SQL   注入攻击是一个常规性的攻击,它可以允许一些不法用户检索你的数据,改变服务器的设置,或者在你不小心的时候黑掉你的服务器。SQL   注入攻击不是SQL   Server问题,而是不适当的程序。如果你想要运行这些程序的话,你必须明白这冒着一定的风险。  
   
  测点定位弱点  
  SQL   注入的脆弱点发生在程序开发员构造一个WHERE   子句伴随着用户的输入的时候。比如,一个简单的ASP程序允许用户输入一个顾客的ID然后检索公司的全部人员的名字,如果顾客ID如果作为ASP页面的请求串的一部分返回,那么开发员可以编写下面的代码获得数据:  
   
  strConn   =   "Provider=SQLOLEDB;Data   Source=(local);"   &   _  
    "Database=Northwind;Integrated   Security=SSPI"  
  Set   cnn   =   Server.CreateObject("ADODB.Connection")  
  cnn.Open     strConn  
  strQuery   =   "SELECT   ContactName   FROM   Customers   "   &   _  
    “WHERE   CustomerID   =   '"   &   Request.Form("CustID")   &   "'"  
  Set   rstResults   =   cnn.Execute(strQuery)  
  Response.Write(rstResults.Fields("ContactName").Value)  
   
  现在你知道什么地方有问题了吧?如果用户知道一个用户的ID,他可以通过检索来获得全部的相应的名字。现在明白了?  
   
  获得额外的数据  
  当然,对于一个攻击程序,尽管它不知道任何顾客的ID,甚至不用去猜,它也可以获得数据。为了完成这个工作,它将下面的文本输入到应用程序调用顾客ID的textbox中:  
   
  customer   ID:  
  'UNION   ALL   SELECT   ContactName   FROM   Customers  
    WHERE   CustomerID   <>'    
  Top

8 楼huhanshan013(飞兵团将军)回复于 2004-09-04 09:46:46 得分 0

'UNION   ALL   SELECT   ContactName   FROM   Customers  
    WHERE   CustomerID   <>'    
   
  这句话什么意思啊?  
  谢谢Top

相关问题

  • 菜鸟问题,经常听说SQL注入式攻击,是怎么回事啊,ASP.NET中如何防范SQL注入式攻击?
  • 关于sql注入攻击
  • SQLserver被注入攻击了,请教大家有没有防范方法!
  • ===============请问各位高手,这样能被sql注入攻击吗?==================
  • 问大家一个问题,什么叫SQL注入式攻击???
  • SQL注入式攻击,用SQL参数的方法可以防得住吗?
  • 预防注入攻击
  • sql注入防范问题,急急急急急急急急急急急急急急急急急急急急急急!
  • 被告知有SQL注入漏洞,并且对取得管理员密码,请教如何产生的及其防范
  • 有关注入式攻击,请教!!

关键词

  • 加密
  • 字符
  • 密码
  • 数据
  • 信息
  • sql
  • server
  • paravalue
  • 参数
  • saferequest

得分解答快速导航

  • 帖主:newhandtoo

相关链接

  • Web开发类图书

广告也精彩

反馈

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