我们可以预编译我们的(ASP.NET)网站,并且只能发布IL代码,因此客户无法获得源代码。
但是我们如何为SQL Server编写的存储过程做到这一点。我的意思是,当我们向客户提供数据库时,他可以看到我的所有存储过程并且可以修改相同的...我怎样才能保护它。
由于
Raja
答案 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)和代码示例,您可以随时在网上找到。