3

是否可以保护 SQL 2008 存储过程代码不被任何人看到?也许一些加密,或者像dll一样组装?

4

1 回答 1

4

是的,您可以将其以加密形式保存在数据库中,但如果这样做,请确保将原始源代码安全地存储在某个地方...

CREATE PROCEDURE dbo.foo 
WITH ENCRYPTION 
AS 
BEGIN 
    SELECT 'foo' 
END

不幸的是,至少有两种方法可以打败这种机制。一种是在执行存储过程的同时运行SQL Profiler;这通常可以显示过程本身的文本,具体取决于存储过程的功能(例如,如果它有 GO 批处理、动态 SQL 等)。如果他们错过了初始安装,用户可以删除存储过程或删除数据库,启动 Profiler 跟踪,并要求您重新创建它们(在这种情况下,他们将捕获 CREATE PROCEDURE 语句)。您可以通过在代码中嵌入 sp_password 作为注释来防止 Profiler 向窥探者透露文本:

CREATE PROCEDURE dbo.foo 
WITH ENCRYPTION 
AS 
BEGIN 
    SELECT 'foo' 
    -- comment: sp_password 
END

查看MSDN Create Procedure文档

于 2009-09-11T20:37:36.003 回答