近年来,随着相关法律法规的完善、国家等级化保护要求,以及行业风险管理和内控指标的出台,安全审计产品慢慢的为大家所熟悉。而近年来数据盗窃和数据泄露等高危事件频发,数据安全也越来越受各大企业和单位的重视。数据库审计就是一款保护用户数据安全的产品。

上一期的数据库审计功能我们详述了双向审计,今天我们来聊一下绑定变量审计。

那么什么是绑定变量呢?

首先我们来看一下SQL语句的解析流程,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZdVrKqxW-1603781688204)(http://www.csbit.cn/upload/images/2018/8/WX20180801-104055@2x.png)]

服务器进程接收到一条SQL语句,首先检查共享池中是否有之前解析过的相同的SQL语句,如果有,就从共享池的缓存库中找到之前解析生成的执行计划直接执行,SQL语句不需要再次解析,从而直接跳到执行阶段,这种解析称作软解析。

如果在共享池的库缓存中找不到对应的执行计划,则必须经过解析SQL的环节,生成执行计划,这种解析称作硬解析。

将解析过程进一步简化可以得到下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VfHefGHC-1603781688207)(http://www.csbit.cn/upload/images/2018/8/WX20180801-104233@2x.png)]

硬解析 涉及到大量的数据运算,会消耗大量的CPU资源,例如下两条语句单独执行需要完整的硬解析两遍:

select * from userinfo where userid =’N0001’;

select * from userinfo where userid =’N0002’;

但如果运用绑定变量执行:

select * from userinfo where id= :1;

使:1分别等于100和200,则数据库解析时用占位符,然后再传值执行,这样就只需要执行一次硬解析,两SQL复用同一个执行计划,节省了硬解析的资源开销。

假设某条语句被重复执行了非常多次,那么使用绑定变量带来的好处是巨大的,能极大的节省资源,提高速度,因此是一种重要的性能优化手段被广泛应用于对性能有要求的系统中。

对数据库审计的影响

因为绑定变量的采用,传统的审计只能审计到含有变量字符的SQL,不包含具体值,这样会造成信息的丢失。

例如执行语句:

select * from userinfo where userid=:1; 1:=’N0006’;

传统方式的审计日志只会记录如下语句:

select * from userinfo where name=:1;

这样会造成如下后果:

(一)对审计日志中查询条件中的的具体值做检索时会导致检索结果不准确;

(二)不能审计到正确的SQL语句。

完整还原

不漏审是检验数据库审计系统的基本标准,如果要得到全面准确的审计,对绑定变量审计的功能必不可少,我们没有忽视这一小小细节,我们的审计功能很早就可以完美审计到绑定变量的具体值,并还原成完整的语句,不遗漏任何一条SQL。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-egkVnHZY-1603781688209)(http://www.csbit.cn/upload/images/2018/8/WX20180801-104444@2x.png)]

数据库是各种软件应用系统的基础设施,系统对于数据库的访问SQL千变万化,要想实现全面准确的审计,就要不断的跟进分析和研发,让审计的触角覆盖到数据库访问的每一个角落。

中安威士数据库审计之绑定变量审计相关推荐

  1. Oracle中如何查找未使用绑定变量的SQL语句?

    Oracle中如何查找未使用绑定变量的SQL语句? 利用V$SQL 视图的 FORCE_MATCHING_SIGNATURE 字段可以识别可能从绑定变量或 CURSOR_SHARING 获益的 SQL ...

  2. php mysql 绑定变量,在MYSQL中,怎么用PDO绑定变量的方式插入数据?

    比如我的SQL语句是 INSERT INTO `man_db_write`.`man_articles` (`title`,`content`,`created`) VALUES (:0_title, ...

  3. mysql定义变量字符串类型_mysqli_stmt :: bind_param():类型定义字符串中的元素数量与绑定变量的数量不匹配...

    因此,我需要执行大量令人头痛的查询,涉及到需要使用mysqli预准备语句将 65个 表单输入注入数据库的查询. 我遇到的问题是它说我尝试调用的变量数bind_param与我正在使用的" s& ...

  4. 中安威士成功入选《中国数据库安全市场全景图》

    近日,专注于网络安全垂直领域的知名媒体"数说安全"发布了<中国数据库安全市场全景图(上)>. 报告指出"随着我国相关法律规范的相继颁布实施,数据安全开始逐步被 ...

  5. Oracle绑定变量和审计功能影响性能吗?Python告诉你

    墨墨导读:SQL中使用绑定变量,以及开通审计功能对数据库影响有多大?本文来自读者投稿,作者用Python进行了一番测试,欢迎评论区交流互动. 一.概述 dba在工作中避不开的两个问题,sql使用绑定变 ...

  6. “真正的数据库水印系统长啥样?” ——十问中安威士升级版数据库水印系统

    该版本阐释了"真正的数据库水印系统长啥样?"这个问题. 问1 什么是数据库水印? 数据库水印,是指通过对数据库中的数据进行修改.标记,以起到数据所有权判定与数据完整性验证的作用. ...

  7. oracle 新建绑定变量,在Oracle中,绑定变量是什么?绑定变量有什么优缺点?

    ♣答案部分 绑定变量这节的内容较多,下面给出这节涉及到的关系图: (一)绑定变量的含义及优缺点 通常在高并发的OLTP系统中,可能会出现这样的现象,单个SQL的写法.执行计划.性能都是没问题的,但整个 ...

  8. 如何找出应用程序未使用绑定变量

    SQL开发的过程中,如果不使用绑定变量,会对数据库性能造成非常严重的影响请看如下示例代码: begin   for i in 1..1000 loop   execute immediate 'ins ...

  9. Oracle 绑定变量 详解 .

    之前整理过一篇有关绑定变量的文章,不太详细,重新补充一下. Oracle 绑定变量 http://blog.csdn.net/tianlesoftware/archive/2009/10/17/467 ...

最新文章

  1. 《Algorithm算法》笔记:元素排序(2)——希尔排序
  2. 网传B站数据中心起火?所谓“现场图片”却是盗来的
  3. 使用IDEA基于Maven搭建多模块聚合工程(springmvc+spring+mybatis整合)
  4. td 首行缩进_工作中常用的CSS整理
  5. 二、前端pink老师的CSS定位学习笔记(超详细,简单易懂)
  6. python画海绵宝宝_《1,2,3到动物园》数数书,适合幼儿园小班宝宝亲子共读,从游戏中了解数字的概念...
  7. Php jsondb,JsonDB-PHP
  8. log4net配置文件样本
  9. 据报道称“浏览器内核有上千万行代码”,浏览器内核真的很复杂吗?
  10. MySQL-第十五篇使用连接池管理连接
  11. js中this理解。
  12. Win10系统如何快速更改桌面文件夹图标
  13. 如何在Tungsten Fabric上整合裸金属服务器(附配置验证过程)
  14. dell 730xd硬raid配置
  15. 兵临城下 (深度搜索)
  16. 计算机制作通知的具体步骤,关于举办2018年镇江市中小学电脑制作活动的通知...
  17. 单周期CPU设计(Verilog)
  18. 单片机多电梯控制系统
  19. 【Aegisub相关】Lua程序设计 第4版(中文翻译)
  20. IDC评述网:2013年12月份中国域名服务商Top25

热门文章

  1. 数学史上你认为最丑陋的公式是什么?
  2. 第2次作业—— 时事点评 红芯浏览器
  3. android开发板只有网口和串口如何使用android studio进行调试
  4. 会计与计算机发展现状及发展趋势,会计电算化的现状及其发展趋势毕业论文.doc...
  5. oracle去重命令_工作记录之 oracle去重的三个方法
  6. 简历投递最佳时间点公布
  7. 扬帆凌远:shopee文具类的选品方法。
  8. root才能修改数据的软件,root怎么修改
  9. A星 A* 寻路 格子 理解
  10. 多商户商城系统开发方案