0

我想问你是否有(在实践中)以这种方式对数据库进行编码的技术,即表名是任意的,并且字段以某种方式被编码(未加密)。

例如考虑一个MVC类,其中模型分为“低”和“高”级别。高级别与低级别和控制器通信,低级别与高级别和DB通信。

低级模型知道 DB 结构以及它是如何编码的(以及在编码结构和逻辑结构之间进行转换),而高级模型只知道 DB 逻辑结构。

示例:实际数据库包含名为“ff”的用户表,其中包含字段“a”-> 用于用户 ID,“fdas”-> 用于用户名和“g12ds”-> 用于密码。

高层认为有一个名为“users”的表,包含字段“uID”、“uName”、“uPass”。

底层知道两者以及如何将一个翻译成另一个。

如果高层想要获取用户名为“john1234”的行,它会询问低层,如 $LOW->getRow("users.uName",EQUALS,"john1234"),然后低层询问数据库“select * from ff where fdas=='john1234'", 翻译响应并返回高级别结果,如 array("uName" => "john1234", "uID" => "75", "uPass" => "whatever ")

字段值也可以被编码(如映射'a'到'b','b'到'c','@'到'g','g'到'+'等等......)而不影响搜索能力,只要低级模型知道如何翻译(和逆向过程)。

目标是提高数据库的安全性,因为如果攻击者获取数据,他将无法直观地判断用户存储在哪个表中以及用户名是什么。

我的问题是:在实践中是否有类似的实现?

4

0 回答 0