一.什么是SQL注入
1.SQL注入的定义
     SQL注入(SQL Injection) 利用了程序中的SQL的漏洞,进行攻击的方法。

2.SQL注入举例
  1)利用SQL语法错误获取数据库表的结构信息:
      攻击者要成功实施一次攻击,需要了解哪个表和列可用。SQL Server默认的行为是,当不正确查询运行时返回错误消息。

例如攻击者输入用户名:“'having 1=1;--”,数据库将返回包含表名和代码查询中第一列的错误消息;

而group by语句可以更进一步确定查询中的列:“'group by 表名.列名 having 1=1;--”,

数据库将返回查询中的下一列;攻击者可以继续附加group by语句,直到不再收到错误消息。
  2)获取数据库内容信息:
      攻击者可以利用变换错误消息,获取数据库中存储的数据,

例如输入用户名:“'union select min(username),1 from users where username>1;--”,

数据库将返回表中的第一个用户名。

攻击者可以使用同样的SQL注入,用password代替username得到用户账户的密码,以此类推,可以获取数据库表中的每条记录。
  3)使用的 '-- 或 ' or 1=1-- 缩短查询条件
       select username from users
       Where username=’admin’--’and password=’123’
  4)修改数据库表的内容:
       攻击者通过“';”来结束一条查询语句,然后附加破坏性的SQL语句,

例如:“';delete from Accounts”或“';insert into Users (……)”。
       select username from users
       Where username=’admin’;drop table users --’
       and password=’123’
5)通过SQL访问操作系统
Select username from users
Where username=’admin’; EXEC xp_cmdshell 'net user haker 123456 /add’--’ and password=’123’

二.如何防范SQL注入
1.避免拼接SQL
2.使用存储过程
3.使用参数化SQL
     SqlParameter可以提供类型和长度检查,并自动转义用户输入。
     Select username from users where username=@username 
     And password=@password
4.限制长度
5.录入验证,类型检查
     Select title from news where id=123; delete from news
6.过滤或转义危险字符
    inputSQL.Replace("'", "''");
    ’  ;  --   /*  */  xp_
7.在服务器上处理错误:
    成功的SQL注入攻击不一定导致错误;导致错误的SQL注入通常是攻击者正在收集数据库信息,是攻击的前兆。

在 try..catch..finally中处理错误;
    <compilation debug="false"/>;
    <customErrors mode="RemoteOnly"/>。
8.程序所使用的数据库帐户最少的权限

SQL注入攻击及防范的更多相关文章

  1. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  2. SQL注入攻击

    SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候, ...

  3. mysql注入攻击及防范

    一.注入攻击种类     1. GET注入         输入参数通过URL发送.     2. POST注入         输入参数通过HTTP正文发送     3. COOKIE注入      ...

  4. ASP.NET中的SQL注入攻击与防护

    什么是SQL注入攻击? 它是在执行SQL查询的时候,由于接收了用户的非法参数从而导致,所执行的SQL语义与业务逻辑原本所要查询的语义不相符,从而实现的攻击. 例如我们经常使用的用户登录,通常会出现这样 ...

  5. 【数据库】SQL注入攻击

    背景: 机房收费系统验收的时候,师父提到SQL注入攻击.自己以前看过类似的博客大概知道一些这方面的事情,于是自己动手查了查. 定义: 所谓SQL注入,通过SQL命令插入到Web表单提交或者输入域名或页 ...

  6. SQL注入攻击的种类和防范手段

    观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的.虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施. ...

  7. 防范 SQL 注入攻击

     防范 SQL 注入攻击 我们执行的 SQL语句中包含变量,执行的时候会直接把变量内容替换进去.而如果攻击者在输入框中输入一些危险的字符(通常包含 SQL 注释符 --,以及其他预先精心设置的内容), ...

  8. web安全防范之SQL注入攻击、攻击原理和防范措施

    SQL注入 攻击原理 在编写SQL语句时,如果直接将用户传入的数据作为参数使用字符串拼接的方式插入到SQL查询中,那么攻击者可以通过注入其他语句来执行攻击操作,这些攻击包括可以通过SQL语句做的任何事 ...

  9. web攻击之三:SQL注入攻击的种类和防范手段

    观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的.虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施. ...

随机推荐

  1. install Nagios on Unbuntu Unix

    Ubuntu Quickstart Up To: ContentsSee Also: Quickstart Installation Guides, Security Considerations I ...

  2. Java 方法覆盖和方法重载

    方法重载(overloaded),要求方法的名称相同,参数列表不相同. 方法覆盖(override),要求①方法名相同,②参数列表相同,③返回值相同 如果是方法覆盖,要注意以下几种情况: 1.子类方法 ...

  3. linux 配置java环境变量

    修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题. ·用文本编辑器打开/etc/profi ...

  4. SSH配置log4j的方法

    SSH使用log4j的方便之处 1. 动态的改变记录级别和策略,即修改log4j.properties,不需要重启Web应用,这需要在web.xml中设置一下.2. 把log文件定在 /WEB-INF ...

  5. c++ const 关键字 学习笔记

    const简单介绍: 1不再使用c中的#define,c++默认不给const定义的变量分配内存,所以它默认的是仅本文件可以看到该变量(即internal linkage), const int bu ...

  6. 如何解决MySQLAdministrator 启动报错

    运行环境:MySQL 5.1.41 win32 ZIP 非安装版MySQL GUI Tools 5.0(版本1.2.17.0) 运行MySQLAdministrator时提示:服务器服务或配置文件不能 ...

  7. 函数(Functions)

      概念: 下面是蛮经典的解释: What Good are Functions? You might have considered the situation where you would li ...

  8. Unicode汉字编码表

    U+  0   1  2  3  4   5  6   7   8   9   A  B  C  D  E  F  ------------------------------------------ ...

  9. git整理纷乱的历史合并记录

    https://github.com/Epix37/Hearthstone-Deck-Tracker 以上面版本库的master分支为例 父节点1 SHA-1: a21142968282ae49720 ...

  10. Counting sheep...

    Counting sheep... Description: Consider an array of sheep where some sheep may be missing from their ...