如何在SQL Server数据库中加密数据
为了防止某些别有用心的人从外部访问数据库,盗取数据库中的用户姓名、密码、信用卡号等其他重要信息,在我们创建数据库驱动的解决方案时,我们首先需要考虑的的第一条设计决策就是如何加密存储数据,以此来保证它的安全,免受被他人窥测。
SQL Server中有哪一种支持可以用于加密对象和数据?从一开始就讨论一下SQL Server欠缺什么是明智的,或者是对于SQL Server中的加密部分你不应该做什么。
首先,SQL Server有两个内置的密码函数——即,pwdencrypt() 和 pwdcompare()。同时,还有两个SQL Server用来管理密码哈希的没有正式记录的函数:pwdencrypt() 将密码哈希过后进行存储; pwdcompare()将提供的字符串与哈希后的字符串进行比较。不幸的是,这个哈希函数不是非常安全,它可以通过字典攻击算法被破解(类似命令行应用程序!)。
这些函数随着SQL Server的版本发展而不断进行修改,这也是另一个没有使用它们的原因。早期版本的SQL Server对密码进行的哈希,在后来的版本中无法解密,所以如果你依赖一个版本中的函数,那么当升级的时候,所有你的加密数据就都没有用了,除非你可以首先对其解密——这也就违背了加密的最初的目的。
第二,你可能会尝试去创建一个针对你的数据库的自制的加密解决方案,但是有以下三个理由说明你不要这样做:
除非你是加密专家,否则胡乱编写的加密系统只会提供非常低级的价值不高的保护。新鲜的是,单向密码哈希或者 "ROTx "形式的加密几乎不需要费事就可以被轻松打败。
如果由于你自己的能力的缺乏而导致加密被破解,那么你的数据就完蛋了。你需要将所有的东西进行没有加密的备份,是吗?(即使你加密了,那里有没有安全漏洞?)
当市面上提供有专业级别的,具有工业强度的加密解决方案的时候,你就不值得花费时间去自己做。把你的时间用于构建一个好的,坚固的数据库,而不是再重新发明一次车轮。
那么,什么才是好的加密数据的方式呢?
对于新手,微软提供了一个自己生成的加密解决方案,CryptoAPI 。对于轻量级的加密,军用级别的安全就不在考虑范围之内,它具有相对容易实现的优势:管理员可以安装一个名为CAPICOM 的ActiveX 控制,它可以在T-SQL存储过程中提供CryptoAPI 功能。CAPICOM 支持各种类型的双向加密和单向哈希算法,所以管理员可以挑选最适合应用程序的问题的部分。
如果你对使用微软的解决方案不感兴趣,还有一些很好的第三方的方案可以使用。一家名为ActiveCrypt 的软件有限责任公司制造了XP_CRYPT ,它是SQL Server的插件,可以在视图、程序和触发器中通过扩展存储过程和用户自定义函数(在SQL Server 2000中)来完成加密。你可以下载一个支持无线的MD5,DES ,以及SHA1哈希的免费版本的应用程序; 其他的加密模型就是在比特深度上进行的。(完全版本是无限的。)在你自己的代码中,你可以使用XP_CRYPT,与ActiveX 控制一样(在受限的免费版本中)。对于ASP程序员来说,一个名为AspEncrypt 的组件提供了一种将高级加密整合到你的代码中的简单方式。
对数据库文件自身进行加密或者提供传输层上的安全保护怎么样?对于前者,大家可以在Windows系统中持续使用加密文件系统。然而,你必须保存加密密钥的备份,在出现问题的时候,这个数据有可能会丢失。对于后者,有IPSec和SQL Server自己的SSL加密,都是SQL Server和Windows自带的大家的主要精力应该放在避免以明文存储敏感数据,因为从数据库中抽取没有加密的数据同样是最容易受到攻击的薄弱环节。
分享到:
相关推荐
日前,有多条新闻提到了有人可以从外部访问数据库——通常是应该受到保护的商业解决方案—— 发现数据库中的敏感信息,例如用户姓名、密码、信用卡号或者地址都是...本文将为大家介绍SQL Server 数据库中加密数据须知。
解密SqlServer数据库引擎是指破解SqlServer数据库引擎的加密算法,以获取数据库中的加密数据。SqlServer是一种关系型数据库管理系统,它使用数据库引擎来存储和管理数据。 内容概述: 解密SqlServer数据库引擎的...
介绍如何使用SQL Server 2005数据库加密保护敏感数据
sqlserver数据库加密工具,可以加密表,视图,存储过程,整个数据库等。是开发人员的必备工具!
解决SQLSERVER数据库驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接问题JAR包
1、 在程序语言中先对数据进行加密后再把加密后的数据保存在SQLServer数据库中; 2、 利用SQLServer未公开的加密密码函数,在SQL代码中调用加密密码函数对数据进行加密后保存; 3、 编写扩展存储过程的外部DLL文件...
对一个数据库管理员来说,当要保护你所支持的数据库时,安全是要考虑的最...SQL Server 2008推出了一个新的特性来保护数据库,它叫做透明数据加密(Transparent Data Encryption)——TDE,它对整个数据库提供了保护。
在本次的技术手册中,我们将讨论SQL Server数据库安全的话题,其中包括数据加密、SQL注入攻击、角色控制以及安全通信方面的内容,希望对SQL Server安全有个更全面了解的读者,赶紧下载阅读吧。 来自TT
win10 中安装 navicate premuim12 与sqlserver 2012客户端连接sqlserver数据库时遇到问题及解决方法
Sql Server数据库加密技术应用.pdf
VC2015操作SQLITE3数据库及MYSQL数据库,SQL SERVER数据库,并且是对SQLITE3加密
SQL Compare Pro 比较和同步SQL Server数据库结构 SQL Data Compare Pro 比较和同步SQL Server数据库内容 SQL Source Control 将现有源程序控制系统连接到SQL Server ... 在SQL Server数据库结构中搜索
本文对数据库安全的内涵和要求及数据库管理系SQL Serer的安全防护机制,如身份认证、访问控制、完整性保障、访问审计、数据加密与视图、存储过程等进行了详细分析和研究。
采用的是SQL Server的透明数据库加密方式,算法采用AES-128,就算你的数据库文件被窃取,别人依然无法打开你的文件,查看你的数据!具有高安全性!
这是在SQL Server数据库创建md5函数的过程。对数据进行md5加密为32位(加密前要去掉前后空格)保存在库中
代码中直接连接sqlserver数据库 , 并将查询中的数据显示在页面上。
由于项目中必须得用JDK6来作为Java环境,于是连接SQLServer时出现了com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“ Java...