一.什么是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. SAML - SSO(转)

    http://baike.baidu.com/view/758527.htm?fr=aladdin SAML即安全断言标记语言,英文全称是Security Assertion Markup Langu ...

  2. MySQL 主主同步配置和主从配置步骤

    ★预备知识 : 1.双机热备 对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服 ...

  3. 错误:[将截断字符串或二进制数据。\r\n语句已终止。]

    错误:[将截断字符串或二进制数据.\r\n语句已终止.] 解决方法是将数据库表这列的长度调大一点

  4. 自助Linux之问题诊断工具strace

    转  http://www.cnblogs.com/bangerlee/archive/2012/02/20/2356818.html 引言 “Oops,系统挂死了..." “Oops,程序 ...

  5. html5移动web开发实战必读书记

    原文  http://itindex.net/detail/50689-html5-移动-web 主题 HTML5 一.配置移动开发环境 1.各种仿真器.模拟器的下载安装 http://www.mob ...

  6. 126. Word Ladder II

    题目: Given two words (beginWord and endWord), and a dictionary's word list, find all shortest transfo ...

  7. fd_set 用法

    http://www.cnblogs.com/wolflion/archive/2011/07/13/2539137.html select()函数主要是建立在fd_set类型的基础上的.fd_set ...

  8. 【转】Java多线程学习

    来源:http://www.cnblogs.com/samzeng/p/3546084.html Java多线程学习总结--线程概述及创建线程的方式(1) 在Java开发中,多线程是很常用的,用得好的 ...

  9. VC 设置 Stack Overflow

    C/C++ stack overflow, 怎样设置stack大小?解决方案 (1) vc6.0: project->setting->link->project options-& ...

  10. Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04

    摘自: http://www.cnblogs.com/kinglau/p/3796164.html http://www.powerxing.com/install-hadoop/ 当开始着手实践 H ...