簡體   English   中英

修改MSSQL中的列名以提高安全性

[英]Mangling column names in MSSQL for security

我最近加入了一個新項目,以前的產品經理決定修改大多數表中的列名,因為我聽說這主要是為了安全/保護我們的代碼,因為其中很大一部分是SQL存儲過程。

這是一個簡單的可視化:

+-----------+------------+----+----------+-------+
| C1        | C2         | C3 | C4       | C5    |
+-----------+------------+----+----------+-------+
| John Doe  | 11-11-1944 | M  | Street 1 | Julie |
+-----------+------------+----+----------+-------+
| Mary Jane | 13-02-1991 | F  | Street 2 | null  |
+-----------+------------+----+----------+-------+

我在某個地方同意他的觀點,我們需要修改名稱,但在開發產品時而不是在將產品交付給客戶之前就不需要。 應用程序本身在.NET C#中。

首先,我該如何恢復? 有什么策略或最好的工具(類似於JS的uglify線)?

其次,在取消命名后如何仍然可以保護代碼(存儲過程)?

我不知道為什么有人會認為修改名稱會使系統更安全。 如果需要安全性,請使用數據庫安全性功能。 例如,不允許任何人直接讀取表,要求使用存儲過程。 或者,對數據本身進行加密,以免被讀取。 通常,安全的是數據,而不是列的名稱。

就是說,我看不出如何在開發過程中擺脫“雜亂無章”的名字。 可以使用將錯位名稱映射到未修改名稱的視圖。 但是,這僅意味着您有一堆需要在數據庫結構更改時更改的代碼。 更糟糕的是,這意味着原始開發人員在發布后嘗試解決問題時會感到非常困惑。

使用Mangling ...您是要為欄指定有意義的名稱嗎? 如果是,那么您可以創建與已發布表具有相同架構定義的其他表,然后執行

insert into your_new_table
select c1,c2,c3,c4,c5 from 
your_mangled_table

拆開名稱后如何仍然保護代碼(存儲過程)

這將不會自動發生。 您將必須ALTER您的過程代碼,以修改列/表名以反映新的更改。

SQL Server支持存儲過程加密。 我從未使用過它,因此無法進一步評論,但這可能會對您有所幫助。 http://msdn.microsoft.com/en-gb/library/ms187926.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM