在MSSQL中管理列名以确保安全性

时间:2014-06-27 11:21:21

标签: c# asp.net sql sql-server

我最近加入了一个新项目,之前的产品经理决定在大多数表格中破坏列名称,我听说这是针对我们代码的安全/保护,因为主要部分是SQL存储过程。 / p>

这是一个简单的可视化:

+-----------+------------+----+----------+-------+
| 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行)?

其次,如何在解除名称后保护代码(存储过程)?

3 个答案:

答案 0 :(得分:4)

我不知道为什么有人会认为修改名称会使系统更安全。如果需要安全性,请使用数据库安全性功能。例如,不允许任何人直接阅读表格,要求使用存储过程。或者,加密数据本身,以便不被读取。通常,数据是安全的,而不是列的名称。

那就是说,我不知道你怎么能摆脱"损坏的"开发期间的名称。您可以使用将错位名称映射到未编码名称的视图。但是,这只意味着您需要在数据库结构更改时更改一堆代码。更糟糕的是,这意味着原始开发人员在发布后试图解决问题时会非常困惑。

答案 1 :(得分:3)

Mangling ......你的意思是给列提供有意义的名字吗?如果是,那么您可以创建一个具有与发布表相同的模式定义的不同表,然后只需执行

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

如何在解开后保护代码(存储过程)   名字

这是不可能的。您必须ALTER您的过程代码来修改列/表名称以反映新的更改。

答案 2 :(得分:2)

SQL Server支持存储过程加密。我从未使用它,所以无法进一步评论,但这可能会对你有所帮助。 http://msdn.microsoft.com/en-gb/library/ms187926.aspx