首 页详细分类去玩游戏网络学院千一MTV软件下载音乐无极无极天下社区繁體中文
如何防范SQl注入 设为首页
加入收藏
联系我们
学院: 站长学堂 | 网站开发 | 设计学院 | 软件教程 | 数据库类 | 编程经验 | 服务器类 | 网络技术 | 黑客破解 | 维修中心 | [更多]
源码: ASP 源码 | PHP 源码 | JSP 源码 | CGI 源码 | .NET源码 | FLA 源码 | JAVA源码 |Delphi源码| PB 源码 | VC/C++源码 | 其 它
软件: 系统工具 | 网络工具 | 多媒体类 | 图形图像 | 应用软件 | 行业软件 | 教育教学 | 安全相关 | 联络聊天 | 电子书籍 | [更多]
视频: 网络技术 | 图像动画 | 程序设计 | 机械电子 | 外语学习 | 手机: 手机软件 | 手机游戏手机电影手机维修手机铃声
电驴: 电驴电影 | 电驴游戏电驴音乐电驴软件电驴动漫 | 电驴剧集电驴资料电驴综艺电驴杂志 | [更多电驴共享]
您当前的位置:itlove -> 网站开发 -> ASP教程 -> 安全加密 -> 如何防范SQl注入 退出登录 用户管理
推荐精品
热门下载
数据载入中...
热门技术文章
  • ·MDAC2.8下载!
  • ·Sun公司的操作系统:Solaris简介
  • ·RM转VCD/SVCD/DVD/WMV/AVI/MPEG4的终极高手--超级…...
  • ·笔记本电脑解密方法大全
  • ·C#介绍
  • ·win2k NTLDR丢失故障的解决
  • ·教你用PHOTOSHOP制作一寸照片
  • ·JBoss及Lomboz的下载与安装
  • ·PHP入门速成
  • ·入侵六合彩--- 1次入侵的扩散性思维的利用
  • ·SQL Server 服务器安装剖析
  • ·MySQL的JDBC驱动程序下载地址
  • 相关技术文章
  • ·如何防范Windows密码被偷窥
  • ·SQL注入网站入侵实例
  • ·SQL注入漏洞全接触(入门篇)
  • ·SQL注入漏洞全接触(进阶篇)
  • ·SQL注入漏洞全接触(高级篇 )
  • ·如何防范SQl注入
  • ·SQL注入步骤和常用函数以及中文处理方法
  • ·浅谈SQL注入式(SQLinjection)攻击与防范
  • ·防止SQL注入的函数
  • ·讨论一下如何防范SYN-FLOOD攻击的问题
  • ·SQL注入漏洞全接触
  • ·系统管理员如何防范黑客攻击?
  • 如何防范SQl注入
    作者:Ahaoz.CoM  来源:本站整理  发布时间:2006-4-16 8:50:18  发布人:admin


      在设计或者维护 Web 网站时,你也许担心它们会受到某些卑鄙用户的恶意攻击。的确,如今的 Web 网站开发者们针对其站点所在操作系统平台或Web 服务器的安全性而展开的讨论实在太多了。不错,IIS 服务器的安全漏洞可能招致恶意攻击;但你的安全检查清单不应该仅仅有 IIS 安全性这一条。有些代码,它们通常是专门为数据驱动(data-driven) 的 Web 网站而设计的,实际上往往同其它 IIS 漏洞一样存在严重的安全隐患。这些潜伏于代码中的安全隐患就有可能被称为“SQL 指令植入式攻击” (SQL injection) 的手段所利用而导致服务器受到攻击。
      SQL 指令植入式攻击技术使得攻击者能够利用 Web 应用程序中某些疏于防范的输入机会动态生成特殊的 SQL 指令语句。举一个常见的例子:
      某 Web 网站采用表单来收集访问者的用户名和密码以确认他有足够权限访问某些保密信息,然后该表单被发送到 Web 服务器进行处理。接下来,服务器端的ASP 脚本根据表单提供的信息生成 SQL 指令语句提交到 SQL 服务器,并通过分析 SQL 服务器的返回结果来判断该用户名/密码组合是否有效。
      为了实现这样的功能,Web 程序员可能会设计两个页面:一个 HTML 页面 (Login.htm) 用于登录,另一个ASP 页面 (ExecLogin.asp) 用于验证用户权限(即向数据库查询用户名/密码组合是否存在)。具体代码可能象这样:
    Login.htm (HTML 页面) 代码:
    <form action="ExecLogin.asp" method="post">
    Username: <input type="text" name="txtUsername"><br>
    Password: <input type="password" name="txtPassword"><br>
    <input type="submit"> </form>

    ExecLogin.asp (ASP 页面) 代码:
    <%
    Dim p_strUsername, p_strPassword, objRS, strSQL
    p_strUsername = Request.Form("txtUsername")
    p_strPassword = Request.Form("txtPassword")
    strSQL = "SELECT * FROM tblUsers " & _ "WHERE Username=" & p_strUsername & _ " and Password=" & p_strPassword & ""
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open strSQL, "DSN=..."
    If (objRS.EOF) Then
    Response.Write "Invalid login."
    Else
    Response.Write "You are logged in as " & objRS("Username")
    End If
    Set objRS = Nothing
    %>
      乍一看,ExecLogin.asp 的代码似乎没有任何安全漏洞,因为用户如果不给出有效的用户名/密码组合就无法登录。然而,这段代码偏偏不安全,而且它正是SQL 指令植入式攻击的理想目标。具体而言,设计者把用户的输入直接用于构建SQL 指令,从而使攻击者能够自行决定即将被执行的 SQL 指令。例如:攻击者可能会在表单的用户名或密码栏中输入包含“ or ”和“=” 等特殊字符。于是,提交给数据库的 SQL 指令就可能是:代码:SELECT * FROM tblUsers WHERE Username= or = and Password = or =
      这样,SQL 服务器将返回 tblUsers 表格中的所有记录,而 ASP 脚本将会因此而误认为攻击者的输入符合 tblUsers 表格中的第一条记录,从而允许攻击者以该用户的名义登入网站。
      SQL 指令植入式攻击还有另一种形式,它发生在 ASP 服务器根据 querystring 参数动态生成网页时。这里有一个例子,此 ASP 页面从 URL 中提取出 querystring 参数中的 ID 值,然后根据 ID 值动态生成后继页面:
    代码:
    <% Dim p_lngID, objRS, strSQL
    p_lngID = Request("ID")
    strSQL = "SELECT * FROM tblArticles WHERE ID=" & p_lngID
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open strSQL, "DSN=..."
    If (Not objRS.EOF) Then Response.Write objRS("ArticleContent")
    Set objRS = Nothing
    %>
      在一般情况下,此 ASP 脚本能够显示具有特定 ID 值的文章的内容,而 ID 值是由 URL 中的 querystring 参数指定的。例如:当URL为 http://www.example.com/Article.asp?ID=1055 时,ASP 就会根据 ID 为 1055 的文章提供的内容生成页面。
      如同前述登录页面的例子一样,此段代码也向SQL 指令植入式攻击敞开了大门。某些恶意用户可能会把 querystring 中的文章 ID 值偷换为“0 or 1=1”等内容(也就是说,把 URL 换成 http://www.example.com/Article.asp?ID=0 or 1=1) 从而诱使 ASP 脚本生成不安全的 SQL 指令如:
    代码:SELECT * FROM tblArticles WHERE ID=0 or 1=1
      于是,数据库将会返回所有文章的内容
      当然了,本例服务器所受的攻击不一定会引起什么严重后果。可是,攻击者却可能变本加厉,比如用同样的手段发送 DELETE 等 SQL 指令。这只需要简单地修改前述 URL 中的 querystring 参数就可以了!例如:任何人都可以通过 “http://www.example.com/Article.asp?ID=1055; DELETE FROM tblArticles ” 之类的 URL 来访问 Web 网站。
      SQL 指令植入式攻击的危害
      SQL 指令植入式攻击可能引起的危害取决于该网站的软件环境和配置。当 Web 服务器以操作员(dbo)的身份访问数据库时,利用SQL 指令植入式攻击就可能删除所有表格、创建新表格,等等。当服务器以超级用户 (sa) 的身份访问数据库时,利用SQL 指令植入式攻击就可能控制整个 SQL 服务器;在某些配置下攻击者甚至可以自行创建用户帐号以完全操纵数据库所在的 Windows 服务器。
      杜绝SQL 指令植入式攻击
      杜绝SQL 指令植入式攻击的第一步就是采用各种安全手段监控来自 ASP request 对象 (Request 、 Request.QueryString 、 Request.Form 、 Request.Cookies 和 Request.ServerVariables) 的用户输入,以确保 SQL 指令的可靠性。具体的安全手段根据你的 DBMS 而异,下面给出的都是基于 MS SQL Server的例子。
      在前述登录页面的例子中,脚本期望得到的两个输入变量 (txtUserName 和 txtPassword)均为字符串类型。无论用户在哪个参数中插入单引号,他都可能让数据库执行单引号中的 SQL 指令。为了杜绝此类SQL 指令植入式攻击,我们可以借助 Replace 函数剔除单引号,比如:
      代码:p_strUsername = Replace(Request.Form("txtUsername"), "'", "")
      p_strPassword = Replace(Request.Form("txtPassword"), "'", "")
      在第二个例子中,脚本期望的输入变量是长整型变量 (ID) 。用户可以通过在 ID 参数中插入特殊字符来运行不安全的 SQL 指令。为了为了杜绝此类SQL 指令植

    [1] [2]  下一页



       
    [数据载入中...] [返回上一页] [打 印] [收 藏]
    下一篇技术文章:关于ASP的(VBScript)类
     
    相关技术文章 搜索
  • ★ 在迅雷中搜索更多如何防范SQl注入相关内容
  • ★ 在百度中搜索更多如何防范SQl注入相关内容
  • ★ 在GOOGLE中搜索更多如何防范SQl注入相关内容
  • ★ 在SOGOU中搜索更多如何防范SQl注入相关内容
  • ★ 在雅虎中搜索更多如何防范SQl注入相关内容
  • ★ 在腾讯SoSo中搜索更多如何防范SQl注入相关内容
  • ★ 在中国搜索中搜索更多如何防范SQl注入相关内容
  •  
    相关技术文章评论    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]

    用户名
    分 值 100分 85分 70分 55分 40分 25分 10分 0分
    说 明
      (注“”为必填内容。)
     
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    本页主要内容:如何防范SQl注入
    Copyright © 2002-2008 itlove.net. All Rights Reserved .  苏ICP备05061636号