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

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

那么什么是绑定变量呢?

首先我们来看一下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. Linux之软件安装 apt-get
  2. CentOS7 安装NFS SSH免密码登陆
  3. 将CSDN600W用户及密码帐号存入本地MySql数据库
  4. Linux里httpd.conf的ServerRoot
  5. 力扣合并两个有序数组
  6. linux搭建乐网服务器,教你linux搭建web服务器
  7. 考研分享:三战南大,考研的路上你从不孤独(内附500G最新考研资料分享)
  8. C/C++ Socket编程Http下载的简单实现
  9. RE管理器root explorer基础操作教程
  10. 拓端tecdat:R语言RStan MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据
  11. SQL 如何将视图转换成表
  12. 考研复试——数据库复习笔记
  13. 我们的爱恨情仇:人性-关系-危机-和谐的科学研究
  14. Gym 100015H Hidden Code
  15. 2020版KALI安装教程
  16. 薛兆丰经济学思维研究:权利的经济学讨论
  17. QNAP-NAS外网访问——aliyun-ddns,docker,myqnapcloud
  18. Arduino + Lcd1602 显示当前环境温度
  19. 模板template
  20. 饥荒联机云服务器_饥荒联机专用服务器搭建教程

热门文章

  1. PS-文字如何竖排版
  2. lgg8配置_LG 正式推出 G8S ThinQ:高通骁龙 855 + 后置三摄
  3. python微信点赞脚本_Python爬取微信公众号评论、点赞等相关信息
  4. 旋转矩阵中6保6_双色球旋转矩阵中6保5有中6红的几率么?几率多大?
  5. 父View半透明,子View不透明
  6. 库存优化中安全库存的计算方法
  7. 易语言窗口停靠伸缩功能
  8. 文档管理服务器kass,KASS文档管理系统
  9. 审计署发布五家金融机构资产审计报告
  10. web前端期末大作业 【网页设计】基于HTML+CSS2 华为商城 5页