2009-09-11 60 views

回答

4

是你可以將它保存在TI加密形式的數據庫,但如果這樣做,確保你有安全的地方保存原來的源代碼...

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

不幸的是,至少有兩種方法打敗這個機制。一種是在執行存儲過程時運行SQL Profiler;這通常可以揭示過程本身的文本,這取決於存儲過程的作用(例如,如果它有GO批處理,動態SQL等)。如果他們錯過初始安裝,用戶可以刪除存儲過程或刪除數據庫,啓動Profiler跟蹤,並要求您重新創建它們(在這種情況下,它們將捕獲CREATE PROCEDURE語句)。您可以防止探查從中透出通過在代碼中嵌入sp_password的文本窺探者,作爲註釋:

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

看看MSDN Create Procedure機制的文檔

+0

確實這個方法有名字嗎?或者可能是任何鏈接? – Alkersan 2009-09-11 20:39:13

+0

+1爲好的答案(雖然我個人認爲不需要涉及的技術) – ChristopheD 2009-09-11 20:49:31

+0

不幸的是,它需要在谷歌上少於5分鐘才能找到一種方法來繞過SQL服務器中構建的普通加密。如果你真的想保護你的代碼,你可能想要尋找一個商業解決方案 – 2014-11-23 11:26:45