操作系统集成安全性()
可以在很多层面上防止SQL注入攻击第一条防线就是对所要求的权限设置最严格的许可权在上面的例子中如果用户在BOOKS表上没有执行DELETE操作的权限就可以避免恶意地删除记录但是对于应对第一种情形依然是无效的为了确保RDBMS仅仅执行那些计划的语句开发人员可以在应用程序层上实现检查的逻辑或者求助于使用存储过程(在存储过程中添加一些额外的检查实现)另外RDBMS还可以执行一个快速的解析以检测任何意料之外的布尔表达式
数据加密
加密是转换信息的方法它将直接可用的信息转换为另外一种格式如果没有解密就无法使用这些信息通常情况下可以使用与加密数据相同的过程(算法)来解密这些被加密过的数据加密并不是SQL标准的一部分因此每一种RDBMS都提供了不同的与加密有关的服务通常将这些服务作为一组内置的函数
在RDBMS中数据是以纯文本(ASCIIUnicode)或二进制(BLOBSIMAGE和类似的数据类型)形式来存储的为了避免未经授权的用户(碰巧被授予了权限可以访问包含这些数据的表)查看到这些数据或者要通过一个不安全的网络传送数据时可以对数据进行加密在将数据输入到数据库之前可以通过一些客户端软件对数据进行加密或者也可以在RDBMS中使用自身的加密功能对数据进行加密处理
从用于创建数据库对象的SQL代码中可以学习到很多东西在绝大多数数据库中这些代码通常都是以公开的文本形式来存储的可以通过查询特殊的INFORMATION_SCHEMA视图(将在本章后面讨论)来获取这些信息为了避免出现这种情况某些RDBMS允许对用于创建数据库对象(表视图和存储过程)的源代码进行加密
加密数据提供了另外一层安全性为了以人类可读的格式来查看数据(文本图片音频文件或可执行文件)用户需要具有密码和解密工具解密工具可以由RDBMS提供或者包含在用户的客户端软件中
试一试使用IBM DB内置函数加密和解密数据
IBM DB LUW提供了内置函数ENRYPT和DECRYPT_CHAR用于数据的加密和解密
() 打开IBM DB命令编辑器或使用命令行工具连接到LIBRARY数据库
() 执行下面的SQL查询
SELECT ENCRYPT(bk_title PASSWORD) AS encrypted
FROM books
加密后的图书名称为
ENCRYPTED
xEAFFEADCCCACEBA
xDCFFEADFCAADDDEBE
要对上面这个看起来毫无意义的字符串进行解密可以使用DECRYPT_CHAR函数(因为这里处理的是字符数据)和一个完全相同的密码(PASSWORD)解密之后的数据将恢复到原来的格式
示例说明
内置的ENCRYPT函数接受两个参数第一个参数是从表中获得的字符数据第二个参数是用于对字符串进行加密处理的密码加密的结果是人类不可读的杂乱数据使用DECRYPT_CHAR函数和相同的密码可以对加密后的数据进行解密使之恢复为图书名称
实际上存在着数百种数据加密算法既有自定义的算法也有公有算法要发明并实现一种数据加密算法要求熟悉程序设计的原理还需要一些高级数学知识目前已经广泛使用的加密算法包括DES(在年由IBM设计并于年被NIST采用用于非保密数据)RC(来自于RSA Data Security)CMEA(由电信工业协会开发用于加密数字蜂窝电话的数据)FEAL(由日本电话电报公司开发)TEAMDTiger和CAST等
很长时间以来Oracle使用DBMS_OBFUSCATION_TOOLKIT包来加密数据从Oracle g版本开始引入了一个新的DBMS_CRYPTO包它弥补了前任加密包的不足最终的加密办法就是Oracle的透明数据加密(Transparent DataEncryption)特性它基于Oracle Wallet Manager创建的公共/主加密密钥请参考Oracle的文档以获得更详细的信息
在RDBMS与客户端应用程序之间发送的数据也可以加密处理它在传输控制协议/Internet协议(TCP/IP)通信协议(绝大多数网络和Internet连接所使用的协议)的基础上使用安全套接字层(Secure Sockets LayerSSL)或Secure Shell(SSH)进行加密在RDBMS中实现了一些加密函数可以提供工业强度的加密服务在任何时候当需要对数据进行加密时都应该使用这些函数进行处理
数据库审计
审计提供了跟蹤数据库中信息流的功能包括连接企图数据更新删除插入和选取执行的功能等对于事后检查的情形和实时监视以检测未经授权的行为数据库审计都是非常有用的
审计与SQL标准并没有任何关系它在功能实现细节等方面是完全依赖于RDBMS的
安全标准
尽管并非与SQL直接有关但SQL采用了安全标准所定义的基础结构因此SQL用户对这些安全标准很感兴趣通常RDBMS软件遵循这些标准中的某一层级要么是数据库厂商自愿地采用这些标准要么是出于政府部门对软件的可接受度的强制要求的压力
美国国家计算机安全中心(NCSC)在年开始标准化计算机系统的安全规程这被认为是政府的一项要求RDBMS必须通过监督测试保证它们的数据库产品达到某一级别的安全性为了能将产品销售给政府部门数十种RDBMS通过了为期几年的测试规程(测试过程平均为年)在世纪年代诸如SunOracle和Novell这些数据库厂商都获得了相应的认证(C级或者B级)随后官方指示要求所有存储敏感信息的计算机都必须达到C级认证
很多质量监管法规已经启用例如用于金融数据的SarabanesOxley和BASEL II用于医疗信息的HIPAA以及用于信用卡信息的PCI标准等
返回目录SQL实战新手入门
编辑推荐
Oracle索引技术
高性能MySQL
数据仓库与数据挖掘培训视频教程