我创建了一个测验应用程序,它通过电子邮件将结果发送给用户。我想在 url 中包含一个链接,用户可以单击该链接并查看其结果的细分我希望 url 看起来像这样:
http://www.mysite.com/quiz/view/32k4k2u4vxcv88xcv8cv0x98c9v7c7v8887cv
显然不能只散列易于逆向工程的 id cos,考虑到我必须执行 sql 查询来比较散列值,下一个最好、最简单的方法是什么?
我创建了一个测验应用程序,它通过电子邮件将结果发送给用户。我想在 url 中包含一个链接,用户可以单击该链接并查看其结果的细分我希望 url 看起来像这样:
http://www.mysite.com/quiz/view/32k4k2u4vxcv88xcv8cv0x98c9v7c7v8887cv
显然不能只散列易于逆向工程的 id cos,考虑到我必须执行 sql 查询来比较散列值,下一个最好、最简单的方法是什么?
您可以只为每个实例分配一个GUID,这应该是不可能进行逆向工程的(因为它不依赖于记录),并且是唯一的。你在那里的东西看起来也有点像 GUID(即它看起来是随机的并且不可读)。
您可以使用 SALT 来获得更崇高的 sengineering 感知哈希。
define("SALT", "some random string .fsddf09asf9sd0-f9sd0-f9sd-0f9s0a-9f-");
$hash = md5(SALT.$user_id);
稍后,当用户尝试访问该 url 时,首先使用 SALT 再次生成散列,并与提供的 url 中的散列进行比较。
请记住 md5 已经破坏了算法。使用 SHA 哈希算法中的一些。
问候