我不希望客户能够备份我的sql server数据库并访问表数据等。
我知道有些产品会对表格中的数据进行加密,并且在我的应用程序中显示时,他们的产品会对其进行解密。
你们知道什么产品?我有什么选择?
(这是一项业务要求,但有些嘿嘿似乎很愚蠢)。
更新
这是针对sql server 2008 express
答案 0 :(得分:3)
加密数据库中的数据的问题是,只要数据库存在于客户端的计算机上(如您所示,它们正在运行SQL 2008 Express,因此我认为它存在于客户端的台式机或笔记本电脑上)然后他们可以进入数据。他们可以在实例上设置安全性,以便他们具有SA权限,从那里,他们可以获取数据,期间。没有办法解决这个问题。
您需要做的是在数据到达数据库之前对其进行加密:在应用程序中加密数据。在应用程序内部,加密要存储在每个敏感字段中的数据。正如另一张海报所示,您不希望加密ID字段,因为它们用于索引。
答案 1 :(得分:2)
有第三方xp_crypt。它已经存在多年了。 它是一个扩展的存储过程(即DLL)
答案 2 :(得分:0)
SQL Server 2008本机支持数据库加密。查看Transparent Data Encryption (TDE)的文档。
答案 3 :(得分:0)
您可以加密存储过程,这可以保护您的逻辑。
TDE仅适用于企业版。
我找不到它是否支持本机sql加密 - 但你可以通过一点点搜索找到它。但如果确实如此,您可以使用您的应用程序设置数据库主密钥,并将所有解密/加密代码保留在您的应用程序中。
如果它不支持本机加密,您可能希望使用应用程序语言创建/查找自己的加密函数,并锁定代码中的密钥。
答案 4 :(得分:0)
透明数据加密将对磁盘上的数据库进行加密,但在内存中未加密,因此还需要适当的安全性以确保未经授权的用户无法访问该表。由于它是仅限企业版的功能,因此您可以安全地远离它。
SQL Server 2005及更高版本具有内置加密功能 - 查看联机丛书,尤其是第5章 - 加载Adam Machanic的Expert SQL Server 2005开发书(技术上,Lara Rubbelke写了第5章)。
请注意,您只想加密某些列 - 那些您永远不会尝试查找的列,因为加密列对于索引几乎没用。 Adam Machanic的书提出了解决这个问题的方法。
答案 5 :(得分:0)
透明SQL Server加密的另一个解决方案是DbDefence 适用于小于77 MB的数据库。