最近,我和一个朋友正在讨论如何保护 SQL Server 数据库中的存储过程代码。
从遥远的记忆中,我很确定“加密”在所有版本的 SQL Server 中都非常容易被破解,但是他说它在 SQL 2005 中得到了很大的改进。因此,我没有认真地将其视为安全选项在我曾经工作过的任何系统中。
那么在什么情况下可以使用“加密”,什么时候应该不惜一切代价避免呢?
最近,我和一个朋友正在讨论如何保护 SQL Server 数据库中的存储过程代码。
从遥远的记忆中,我很确定“加密”在所有版本的 SQL Server 中都非常容易被破解,但是他说它在 SQL 2005 中得到了很大的改进。因此,我没有认真地将其视为安全选项在我曾经工作过的任何系统中。
那么在什么情况下可以使用“加密”,什么时候应该不惜一切代价避免呢?
它可用于向不经意的观察者隐藏您的代码,但正如您所说:它很容易被规避。
它真的不可能是任何其他方式,因为服务器需要解密代码才能执行它。它基本上是 DRM,并且由于与所有其他 DRM 相同的原因而失败 - 您不能同时隐藏数据并允许访问它。
@Blorgbeard
很好的回应,关于“WITH ENCRYPTION”的 MSDN 文档似乎同意你的观点,现在称它为“混淆”而不是加密。
然而,我遇到了一些完全不了解这一点的开发人员。希望这个问题/回答也能告知其他人。
是的,它很容易坏掉。上周我遇到了一种情况,我必须解密几个前开发人员为我的客户加密的存储过程。解密后,我付出了适度的努力,我不会依赖它来保护知识产权、密码、用户 ID 的任何方法。真的什么都有。