如何加密存储过程

时间:2010-02-10 03:52:06

标签: asp.net sql-server-2005 stored-procedures

我们可以预编译我们的(ASP.NET)网站,并且只能发布IL代码,因此客户无法获得源代码。

但是我们如何为SQL Server编写的存储过程做到这一点。我的意思是,当我们向客户提供数据库时,他可以看到我的所有存储过程并且可以修改相同的...我怎样才能保护它。

由于

Raja

3 个答案:

答案 0 :(得分:2)

一个老问题。以下是我在这里和那里找到的一些答案:

  • 加密存储过程。一如既往 这已经被指出了两次 没有真正的工作,因为5分钟 谷歌搜索会发现几个黑客。

  • 将存储过程写为CLR 程序。比黑客更难破解 可能是“常规”存储过程 生产和生产的努力更多 支持。

  • 动态提交所有查询 你编译的IL代码。我明白 它可以合理安全地完成 SQL注入攻击,但是要做得很好 确定在你发布之前。 (也许用Linq来做这个?)

  • 转换所有数据库对象名称 (表,列,程序)来 guids或随机乱码。他们可以 读它,但这没什么用。

  • 我并不完全熟悉SQL 2005及以上的加密技术。我真的不你可以在基于代码的对象(程序,函数等)上使用它,但也许你可以吗?

但总的来说,一旦你将数据库的副本提供给拥有SysAdmin权限的人,他们就可以随心所欲地做任何事情。

答案 1 :(得分:1)

使用WITH ENCRYPTION

例如

CREATE PROCEDURE prTest
WITH ENCRYPTION
AS
SELECT GETDATE()

请记住,它可以被破解并确保您备份了未加密的源代码

答案 2 :(得分:0)

CREATE PROCEDURE ... WITH ENCRYPTION

但请注意,此加密实际上更像是混淆,如果您的供应商已经确定,有几种方法可以绕过它,包括DAC连接,某些第三方产品(包括RedGate SQL Prompt)和代码示例,您可以随时在网上找到。