SQL注入:究竟什么时候会用到SQL呢?回答是訪问数据库的时候。也就是说SQL注入-->直接威胁到了数据源,呵呵。数据库都收到了威胁,站点还能正常现实么?

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串。终于达到欺骗server运行恶意的SQL命令。

详细来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎运行的能力,它能够通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的站点上的数据库。而不是依照设计者意图去运行SQL语句。

[1]比方先前的非常多影视站点泄露VIP会员password大多就是通过WEB表单递交查询字符暴出的,这类表单特别easy受到SQL注入式攻击

依据相关技术原理,SQL注入能够分为平台层注入和代码层注入。

前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是因为程序猿对输入未进行仔细地过滤,从而运行了非法的数据查询。基于此,SQL注入的产生原因通常表如今下面几方面:①不当的类型处理;②不安全的数据库配置。③不合理的查询集处理;④不当的错误处理;⑤转义字符处理不合适;⑥多个提交处理不当。

注入方法:

1.猜表名。列名等

先猜表名

And (Select count(*) from 表名)<>0

猜列名

And (Select count(列名) from 表名)<>0

或者也能够这样

and exists (select * from 表名)

and exists (select 列名 from 表名)

返回正确的,那么写的表名或列名就是正确

2.后台身份验证绕过漏洞

验证绕过漏洞就是'or'='or'后台绕过漏洞,利用的就是AND和OR的运算规则,从而造成后台脚本逻辑性错误

比如管理员的账号password都是admin。那么再比方后台的数据库查询语句是

user=request("user")

passwd=request("passwd")

sql='select admin from adminbate where user='&'''&user&'''&' and passwd='&'''&passwd&'''

那么我使用'or 'a'='a来做usernamepassword的话,那么查询就变成了

select admin from adminbate where user=''or 'a'='a' and passwd=''or 'a'='a'

这种话,依据运算规则。这里一共同拥有4个查询语句,那么查询结果就是 假or真and假or真,先算and 再算or,终于结果为真
。这样就能够进到后台了

怎样预防 呢?归纳一下,主要有下面几点:

1.永远不要信任用户的输入。对用户的输入进行校验,能够通过正則表達式,或限制长度;对单引號和
双"-"进行转换等。

2.永远不要使用动态拼装sql,能够使用參数化的sql或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每一个应用使用单独的权限有限的数据库连接。

4.不要把机密信息直接存放。加密或者hash掉password和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示,最好使用自己定义的错误信息对原始错误信息进行包装
6.sql注入的检測方法一般採取辅助软件或站点平台来检測。软件一般採用sql注入检測工具jsky,站点平台就有亿思站点安全平台检測工具。MDCSOFT
SCAN等。採用MDCSOFT-IPS能够有效的防御SQL注入。XSS攻击等。
等待试验........

SQL注入原理以及怎样避免注入的更多相关文章

  1. SQL注入原理及代码分析(二)

    前言 上一篇文章中,对union注入.报错注入.布尔盲注等进行了分析,接下来这篇文章,会对堆叠注入.宽字节注入.cookie注入等进行分析.第一篇文章地址:SQL注入原理及代码分析(一) 如果想要了解 ...

  2. sql盲注之报错注入(附自动化脚本)

    作者:__LSA__ 0x00 概述 渗透的时候总会首先测试注入,sql注入可以说是web漏洞界的Boss了,稳居owasp第一位,普通的直接回显数据的注入现在几乎绝迹了,绝大多数都是盲注了,此文是盲 ...

  3. Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解

    前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误.其实sql注入漏洞就是一个.作为一个菜鸟小程 ...

  4. SQL注入原理

    随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一 部分程序员在编写代码的时候,没有对用户输入数据的合法性 ...

  5. SQL注入原理深度解析

    本文转自:http://www.iii-soft.com/forum.php?mod=viewthread&tid=1613&extra=page%3D1 对于Web应用来说,注射式攻 ...

  6. SQL注入原理及绕过安全狗

    1.什么是SQL注入攻击 SQL注入攻击指的是通过构造特殊的输入作为参数插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令 http://www.xxx.com/list. ...

  7. 第1课:SQL注入原理深度解析

    对于Web应用来说,注射式攻击由来已久,攻击方式也五花八门,常见的攻击方式有SQL注射.命令注射以及新近才出现的XPath注射等等.本文将以SQL注射为例,在源码级对其攻击原理进行深入的讲解. 一.注 ...

  8. 回头探索JDBC及PreparedStatement防SQL注入原理

    概述 JDBC在我们学习J2EE的时候已经接触到了,但是仅是照搬步骤书写,其中的PreparedStatement防sql注入原理也是一知半解,然后就想回头查资料及敲测试代码探索一下.再有就是我们在项 ...

  9. SQL注入原理&分类&危害&防御

    SQL是什么? 结构化查询语句 SQL注入是什么? 是一种将SQL 语句插入或添加到用户输入的参数中,这些参数传递到后台服务器,加以解析并执行 造成注入的原因/原理? 1.对用户输入的参数没有进行严格 ...

随机推荐

  1. apt-get常见错误

      安装错误:“E: Unmet dependencies.” 原因:非正常停止apt-get install * 错误提示:E: Unmet dependencies. Try 'apt-get - ...

  2. LightOJ--1152--Hiding Gold(二分图奇偶建图)(好题)

    Hiding Gold Time Limit: 2000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu Submit Sta ...

  3. 【联系】—— Beta 分布与二项分布、共轭分布

    1. 伯努利分布与二项分布 伯努利分布:Bern(x|μ)=μx(1−μ)1−x,随机变量 x 取值为 0,1,μ 表示取值为 1 的概率: 二项分布:Bin(m|N,μ)=(Nm)μm(1−μ)N− ...

  4. oracle中关于删除表purge语句和闪回语句的基本使用

    语法: drop table ... purge; 例子:drop table test purge; purge是直接删除表,不保留到回收站,10G开始默认drop表式改名移动到回收站; 闪回(fl ...

  5. NVL和NVL2有什么区别,NULLIF 的使用.

    NULL指的是空值,或者非法值. NVL (expr1, expr2):expr1为NULL,返回expr2:不为NULL,返回expr1.注意两者的类型要一致 NVL2 (expr1, expr2, ...

  6. C - Queue at the School

    Problem description During the break the schoolchildren, boys and girls, formed a queue of n people ...

  7. .net中的TreeView的数据绑定与EasyUi_tree的数据绑定

    昨天看到了.net中的TreeView,学习了一波TreeView的数据绑定,联想到EasyUi中的Tree的数据,觉得里面的逻辑差不多,就总结了一下两者的数据绑定. 前端页面和必要的JS如下 < ...

  8. lua闭包函数

    function createCountdownTimer(second) local ms = second * local function countDown() ms = ms - retur ...

  9. 5.Project常用操作介绍

    Project常用操作介绍 1.项目浏览器 2.项目属性 Name:项目名称 Category:项目组织结构 Author:作者 Copyright:版权 Image:项目图标 Description ...

  10. JavaScript中的数组创建

    JavaScript中的数组创建 数组是一个包含了对象或原始类型的有序集合.很难想象一个不使用数组的程序会是什么样. 以下是几种操作数组的方式: 初始化数组并设置初始值 通过索引访问数组元素 添加新元 ...