防止SQL注入:

1、开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置

2、执行sql语句时使用addslashes进行sql语句转换

3、Sql语句书写尽量不要省略小引号和单引号

4、过滤掉sql语句中的一些关键字:update、insert、delete、select、*

5、提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。

6、Php配置文件中设置register_globals为off,关闭全局变量注册

7、控制错误信息,不要再浏览器上输出错误信息,将错误信息写到日志文件中。

如何进行防SQL注入?

1、过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等

或者通过系统函数:addslashes(需要被过滤的内容)来进行过滤

2、在PHP配置文件中Register_globals=off;设置为关闭状态 //作用将注册全局变量关闭。

比如:接收POST表单的值使用$_POST['user'],如果将register_globals=on;直接使用$user可以接收表单的值。

3、SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号

4、提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的

5、对于常用的方法加以封装,避免直接暴漏SQL语句

6、开启PHP安全模式Safe_mode=on;

7、打开magic_quotes_gpc来防止SQL注入Magic_quotes_gpc=off;默认是关闭的,它打开后将自动把用户提交的sql语句的查询进行转换,把'转为\',这对防止sql注入有重大作用。

因此开启:magic_quotes_gpc=on;

8、控制错误信息

关闭错误提示信息,将错误信息写到系统日志。

9、使用mysqli或pdo预处理。

一句话总结,看程序员把这些改规范的规范掉了,就是见缝插针。

3.怎样sql注入?

为了更直观的让大家了解到sql注入的原理,贴上一张sql注入攻击示意图

●SQL注入威胁表现形式可以体现为以下几点:

●绕过认证,获得非法权限

●猜解后台数据库全部的信息

●注入可以借助数据库的存储过程进行提权等操作

●SQL注入攻击的典型手段

●判断应用程序是否存在注入漏洞

●收集信息、并判断数据库类型

●根据注入参数类型,重构SQL语句的原貌

●猜解表名、字段名

●获取账户信息、攻击web或为下一步攻击做准备

二、SQL注入的简单例子

1.SQL注入漏洞的几种判断方法

①http://www.heetian.com/showtail.asp?id=40'

②http://www.heetian.com/showtail.asp?id=40 and 1=1

③http://www.heetian.com/showtail.asp?id=40 and 1=2

如果执行①后,页面上提示报错或者提示数据库错误的话,说明是存在注入漏洞的。

如果执行②后,页面正常显示,而执行③后,页面报错,那么说明这个页面是存在注入漏洞的。

因为正确的链接:http://www.heetian.com/showtail.asp?id=40没有问题,如果如果执行①后,页面上提示报错或者提示数据库错误的话说明是不满足条件,说明查询的条件不满足,是有一个查询语句的,明是存在注入漏洞,如果执行②后,页面正常显示,而执行③后,页面报错,那么说明这个页面是存在注入漏洞的。

2.收集信息、判断数据库类型

从其返回的信息中可以判断下数据库的类型,更多可能可以知道部分数据库中的字段以及其他有用信息,为下一步攻击提供铺垫。

3.根据注入参数类型,重构SQL语句的原貌

①ID=40 这类注入的参数是数字型,那么SQL语句的原貌大致是:Select*from 表名 where 字段=40

②name=电影 这类注入的参数是字符型,SQL语句原貌大致是:Select*from 表名 where 字段=‘电影’

③搜索时没有过滤参数的,如keyword=关键字,SQL语句原貌大致是:Select*from 表名 where 字段 like ‘%关键字%’

4.猜解表名、字段名(直接将SQL语句添加到URL后)

①and exists(select*from 表名)

如果页面没有任何变化,说明附加条件成立,那么就是说明猜解的表名正确,反之,就是不存在这个表,接下来就继续猜解,知道正确

②and exists(select 字段 from 表名)

方法原理同上

③猜解字段内容(利用以上猜解出的表名和字段名 方法较古老且麻烦)

●猜解字段内容的长度

(select top 1 len(字段名)from 表名)>0 直至猜解到>n不成立的时候,得出字段的长度为:n+1。

●得到长度后,猜解具体的内容

(select top 1 asc(mid(username,1,1))from 表名)>0直到>m不成立时,就可以猜解出ASCII码值了。

当然我们猜猜表明猜字段还有其他的方法,下一遍我就用其他的方法给大家演示一下。

mysql数据库sql注入原理_sql注入原理详解(一)相关推荐

  1. (转载)MySQL数据库的主键和外键详解

    主键 主键的定义 主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY 约束来 ...

  2. MySQL数据库主从复制与读写分离(图文详解!)

    目录 前言 一:MySQL数据库主从复制与读写分离 1.什么是读写分离? 2.为什么要读写分离呢? 3.什么时候要读写分离? 4.主从复制与读写分离 5.mysql支持的复制类型 (1)STATEME ...

  3. MySQL 数据库 User表权限以及用户授权详解

    转载:https://blog.mimvp.com/article/27956.html MySQL 常用权限操作 1)本机登陆mysql: mysql -u root -p (-p一定要有):改变数 ...

  4. MySQL 数据库安装、完全卸载与配置详解和NavicatforMySQL下载及使用以及PyMySQL数据库的搭建

    本文内容包括三大块: MySQL 数据库安装 MySQL 数据库完全卸载 MySQL 数据库配置详解 NavicatforMySQL下载及使用 PyMySQL数据库的搭建 大家可以按需提取内容,当然觉 ...

  5. MySQL数据库- 几种数据迁移的方法详解都在这了!看完必懂

    数据迁移的几种方式 - MySQL数据库 本文关键字:MySQL.数据库.数据迁移.导入.导出 文章目录 数据迁移的几种方式 - MySQL数据库 一.数据迁移 1. 数据的生命周期 2. 数据迁移的 ...

  6. MySQL数据库的数据类型以及取值范围详解

    主要包括以下五大类: 整数类型:BIT.BOOL.TINY INT.SMALL INT.MEDIUM INT. INT. BIG INT 浮点数类型:FLOAT.DOUBLE.DECIMAL 字符串类 ...

  7. 数据库SQL语句 SELECT LIKE like用法详解

    转自:http://zvv.me/sql-server/447.html 在SQL结构化查询语言中,LIKE语句有着至关重要的作用. LIKE语句的语法格式是:select * from 表名 whe ...

  8. mysql数据库中index什么意思_MySQL Index详解

    FROM:http://blog.csdn.net/tianmo2010/article/details/7930482 ①MySQL Index 一.SHOW INDEX会返回以下字段 1.Tabl ...

  9. MySql数据库explain用法示例_mysql explain用法详解

    explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了,如: explai ...

  10. SQL注入攻击实现原理与攻击过程详解

    SQL注入攻击实现原理与攻击过程详解 结构化查询语言(SQL)是一种用来和数据库交互的文本语言,SQL Injection就是利用某些数据库的外部接口把用户数据插入到实际的数据库操作语言当中,从而达到 ...

最新文章

  1. 两行代码玩转 Google BERT 句向量词向量
  2. 5G NR RLC:Data Transfer ARQ
  3. AdminLTE基本使用介绍
  4. epublib java_使用Epublib处理epub文件 | 学步园
  5. android 省市区选择器
  6. oracle查看锁表进程,杀掉锁表进程
  7. List实现类的特点和性能分析
  8. java 自己的 pid_Java获取自身PID方法搜集
  9. 1个平方大概多少立杆_普通水泥地面一平方大概要用多少地板漆
  10. kubernetes ingress-nginx原理
  11. 全志F1C200S F1C100S 介绍
  12. “网红蜥蜴”背后的创业路,他潜心于宠物蜥蜴的研发与产业化_汇新云
  13. WEEK-3 实战作业
  14. Ubuntu安装cuda
  15. 凯联医疗完成逾亿元C轮融资 加速布局微量药物输注领域
  16. 明尼苏达量表结果分析_MMPI明尼苏达多项人格测验量表分析
  17. 基于Go语言Iris+Vue+ElementUI的OA办公系统
  18. 详细介绍@GetMapping和@PostMapping的区别
  19. 双屏幕 php,电脑双屏互不干扰
  20. 计算机网络功能中的提高系统的可靠性指的是,下列不属于计算机网络功能的是()。A.提高系统可靠性B.提高工作效率C.分散数据的综合处理D.使...

热门文章

  1. PLSQL存储过程中的内部存储过程
  2. 多媒体计算机接口卡,多媒体技术基础 2.2多媒体接口卡 多媒体接口卡.docx
  3. java启动servlet_Java Servlet 运行原理分析
  4. mysql取固定前缀的表_mysql删除指定前缀的表
  5. vue 悬浮按钮组件_如何搭建和发布一个 Vue 组件库
  6. 查看计算机上隐藏用户,隐藏或显示 InetOrgPerson 对象类 - Windows Server | Microsoft Docs...
  7. python中str函数isdigit、isdecimal、isnumeric的区别
  8. C语言给定3x3矩阵旋转输出
  9. 鸿蒙系统的升级名单,定档6月2日!鸿蒙“首批”升级名单公布,共计11款华为机型!...
  10. springBoot shiro