原文請參考 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。
全站熱搜
留言列表