关于 UUID 数据类型作为主键
About UUID data type as Primary key
通过使用 UUID
作为 table 中的主键,我们可以保护我们的数据免受攻击,但我们还在 [=15= 中存储了 user ID
类详细信息].如果黑客知道用户 ID,他就可以了解有关该行的详细信息。那么,这里的UUID
有什么用呢?
UUID
基本上就是在table中用来唯一标识记录的。与安全无关。您需要防止 SQL injection
攻击发生在您的数据库中。为此,您可以使用 Parameterized stored procedures
。无论哪种情况,一旦入侵者可以访问数据库,这意味着无论哪种方式他都可以访问 table 行。
对于内部关系和引用,自增整数是完美的:小尺寸和小索引。
我在一些项目中额外使用 UUID 来隐藏用户的数据 uploaded/set。用户得到一个带有 UUID 的 link 并且可以将它提供给任何其他人。本案例的数据库布局示例:
dis_id int unsigned not NULL auto_increment,
uuid char(36) not NULL COLLATE latin1_bin,
...和可选的...
unique key(uuid)
整理latin1_bin
优化space 和搜索效率。您也可以将 UUID 存储为 16 字节二进制数据。
通过使用 UUID
作为 table 中的主键,我们可以保护我们的数据免受攻击,但我们还在 [=15= 中存储了 user ID
类详细信息].如果黑客知道用户 ID,他就可以了解有关该行的详细信息。那么,这里的UUID
有什么用呢?
UUID
基本上就是在table中用来唯一标识记录的。与安全无关。您需要防止 SQL injection
攻击发生在您的数据库中。为此,您可以使用 Parameterized stored procedures
。无论哪种情况,一旦入侵者可以访问数据库,这意味着无论哪种方式他都可以访问 table 行。
对于内部关系和引用,自增整数是完美的:小尺寸和小索引。
我在一些项目中额外使用 UUID 来隐藏用户的数据 uploaded/set。用户得到一个带有 UUID 的 link 并且可以将它提供给任何其他人。本案例的数据库布局示例:
dis_id int unsigned not NULL auto_increment,
uuid char(36) not NULL COLLATE latin1_bin,
...和可选的...
unique key(uuid)
整理latin1_bin
优化space 和搜索效率。您也可以将 UUID 存储为 16 字节二进制数据。