是否有可能从任何人的眼睛保护SQL 2008存储过程代码?也许有些加密,或像dll一样组装?
答案 0 :(得分:4)
是的,您可以以加密形式将数据保存在数据库中,但如果您这样做,请确保将原始源代码安全地存储在某处...
CREATE PROCEDURE dbo.foo
WITH ENCRYPTION
AS
BEGIN
SELECT 'foo'
END
不幸的是,至少有两种方法可以打败这种机制。一种是在执行存储过程时运行SQL事件探查器;这通常可以揭示过程本身的文本,具体取决于存储过程的作用(例如,如果它具有GO批处理,动态SQL等)。如果他们错过了初始安装,用户可以删除存储过程或删除数据库,启动Profiler跟踪,并要求您重新创建它们(在这种情况下,它们将捕获CREATE PROCEDURE语句)。您可以通过在代码中嵌入sp_password来阻止Profiler向snoopers显示文本,作为注释:
CREATE PROCEDURE dbo.foo
WITH ENCRYPTION
AS
BEGIN
SELECT 'foo'
-- comment: sp_password
END