繁体   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