原文請參考 http://databases.aspfaq.com/database/how-do-i-protect-my-stored-procedure-code.html

其實大部分時候直接將資料庫命令寫在伺服器端的程式碼,不是不好,是這種程式碼一定是一個人寫的,不是給一個團隊使用的。

或是你也可以用 .Net Framework 3.5 的 Linq ,一種像 Javascript 的語法對資料庫進行存取。

但是最理想化的狀況就是 DBA 作他的,Programmer 作他的, Designer 作他的 (Visual Studio 一開始就是這樣設計的)

那這一篇主要以上除了賺字數,主要就是給辛苦的 DBA 看的,跟伺服器端程式碼一樣,可以保護自己寫好的 DLL,Store Procuder 也可以。

如同原文,請先將自己原本寫好的邏輯概念保護好。

以下是一個一般的 T-SQL

CREATE PROCEDURE dbo.mydb 
AS 
BEGIN 
    UPDATE 'mydb' 
END

那我們要怎樣把這個指令保護起來,避免別人看到此邏輯進行資料庫攻擊呢?

你可以這樣作:

CREATE PROCEDURE dbo.mydb 
WITH ENCRYPTION 
AS 
BEGIN 
    UPDATE 'mydb' 
END

 接著你嘗試用 Management Studio 想要打開這個預存程序,你就會發現以下:

Microsoft SQL-DMO 
Error 20585: [SQL-DMO] 
/****** 
    Encrypted object is not transferable, 
    and script can not be generated. 
******/

雖然還有很多方法去把這個鎖起來的預存程序打開(SQL Profiler),但是至少先騙過比較初階的 Programmer 或 DBA。

arrow
arrow
    全站熱搜

    找女人 發表在 痞客邦 留言(0) 人氣()