混淆数据库表名称

问题描述 投票:0回答:6

我们即将进行一个项目,我们将处理高度敏感的数据。除了加密数据之外,我还在考虑混淆表名称。

因此

tEmployees
会变成
t58633B7A
。添加这个有用吗?毕竟这是关于构建安全/预防层。

附注我们将把混淆的表名映射到数据访问层中的真实姓名

sql-server obfuscation
6个回答
17
投票

这似乎完全是多余的。如果攻击者获得了对数据库的访问权限,那么从总体上看,仅仅不知道表名就几乎没有什么保护作用。如果有的话,您应该花时间在更好的入侵检测和保护机制上。


7
投票

尽管您会一遍又一遍地听到“通过默默无闻实现安全”不好,但它确实有助于提高攻击门槛,只要您记住这不是一个解决方案。 对于您的具体情况,我想说,维护、调试、排除数据库故障的成本将超过少量感知安全性带来的好处。


4
投票

嗯,不是真的......它确实具有在面试时吓跑真正人才的功能,并且可能会让你在 TheDailyWTF 上被提及。


2
投票


0
投票

例如,创建带有列的 EMPLOYEE(隐藏在 table_1 中):



名称代码 数据类型 ID F1 整数 名称 F2 VARCHAR(50) 出生日期 F3 日期

同时在SQLServer中照常创建表(您可以从生成数据库菜单中获取脚本)


CREATE TABLE table_1( f1 int, f2 varchar(50), f3 date);

并创建视图 


CREATE VIEW EMPLOYEE WITH ENCRYPTION AS SELECT f1 ID,f2 NAME ,f3 DOB FROM table_1

WITH ENCRYPTION子句防止用户偷看sql语句来组成视图。 

在应用程序代码中使用视图 EMPLOYEE 而不是 table_1

示例:

insert into EMPLOYEE values('1','kevin','1972/11/24'); insert into EMPLOYEE values('2','ted sulivan','1969/06/12'); insert into EMPLOYEE values('3','wei meng lee','1974/04/17'); SELECT * FROM EMPLOYEE;


并将其与数据加密结合起来(请参阅:

http://blog.sqlauthority.com/2009/04/28/sql-server-introduction-to-sql-server-encryption-and-symmetry-key-encryption-tutorial-带脚本/
当然,使用这种技术,用户仍然可以从视图中访问表,但是用户无法获取表与主键和外键的相互关系,视图没有关系信息。 但是,如果您完全混淆此过程而不使用视图,则必须使用从 PDM 收集的表信息进行编码。
希望能帮到你。由于我和你有同样的问题,当数据库使用管理帐户连接到计算机时,数据库会暴露给用户。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.