0

我有一个信息树,它以 JSON 对象的形式发送给客户端。在该对象中,我不想拥有来自数据库的原始 ID。我想过在对象(例如标题)或盐中制作 id 和字段的哈希,但我担心这可能会对处理开销产生严重影响。

SELECT * FROM `things` where md5(concat(id,'some salt')) = md5('1some salt');

在这种情况下是否有隐藏 ID 的标准做法?

4

3 回答 3

1

一个选项可能是使用 php 会话数据来存储发送到客户端的 id# 列表,以及哈希 id#s。

这意味着每次都会发出唯一的哈希,下次加载时将无法追踪。

哈希 id 可以按照您的想法进行设置(在这种情况下,带盐的 md5 可以工作,但任何简单的事情都可以)并将它们存储在会话中的数组中。

如果可能,尽量避免在数据库中这样做。

于 2012-04-15T17:26:55.137 回答
1

我可以为您想到两个选择:

1)您预先散列每个 id 并将其与原始 id 一起存储在数据库中。这可能是一个好主意,也可能不是一个好主意,具体取决于您的数据库大小和大小限制。

2)自己写一个简单的哈希函数!如果您没有想法,我可以建议您做一些简单的事情。简单不代表不好,只要你知道怎么做就行!我假设该函数没有在客户端被去散列。就个人而言,我更喜欢在服务器端代码端而不是在数据库端管理处理函数(如哈希函数),因为我喜欢让 MySQL 尽可能自由地以尽可能低的延迟返回数据。

于 2012-04-15T17:25:14.350 回答
0

您可以创建一个具有值的新列md5(concat(id,'some salt'))并在进行选择语句之前计算它以节省计算开销。

于 2012-04-15T17:13:41.507 回答