我正在构建一个网站,其中页面上有公共内容,但我不希望用户能够通过更改id
直接在 URL 中的行来猜测下一页是什么。
我在这里发现要做的方法是对十进制/基数 36 进行编码和解码。但是这种方法的问题id
是仍然很容易猜到,因为 1 仍然是 1,而 13 将是 D,等等。
使用较长的哈希/字母数字字符串作为的最佳实践和方法是id
什么?有点像 Youtube URL,没有任何冲突的可能性?
感谢您的帮助和建议,非常感谢。
您可以加密/解密您的 ID 而不是编码。但是,听起来您有必须按顺序执行的特定步骤(页面)序列。
我相信一个更好的方法是有一个业务类来确定用户是否真的被允许(还)看到请求的页面。这样,您可以使用 URL 上的 ID,但依靠您的代码来确定访问权限。
也许最好的想法是使用简单的非线性算法修改散列之前的数字。也许是这样的:
<?php
$id = ($_GET['id']*3)+2;
$id = base_convert($id, 10, 36);
然后取消散列,只需反转算法:
<?php
$id = dase_convert($id, 36, 10);
$id = ($id-2)/3;
实施使用 GUID 作为您的身份。
GUID(全局唯一标识符)是 128 位值,因此如果您想获取某人的 ID,您需要进行大量猜测。
有多种工具可以生成 GUID,VS2010 有一个实用程序可以为您将 GUID 转换为纯文本,但我不知道如何从代码生成,因为我从来不需要,只是一次性用法。
GUID 对身份非常有用。:)