0

我正在构建一个网站,其中页面上有公共内容,但我不希望用户能够通过更改id直接在 URL 中的行来猜测下一页是什么。

我在这里发现要做的方法是对十进制/基数 36 进行编码和解码。但是这种方法的问题id是仍然很容易猜到,因为 1 仍然是 1,而 13 将是 D,等等。

使用较长的哈希/字母数字字符串作为的最佳实践和方法是id什么?有点像 Youtube URL,没有任何冲突的可能性?

感谢您的帮助和建议,非常感谢。

4

3 回答 3

1

您可以加密/解密您的 ID 而不是编码。但是,听起来您有必须按顺序执行的特定步骤(页面)序列。

我相信一个更好的方法是有一个业务类来确定用户是否真的被允许(还)看到请求的页面。这样,您可以使用 URL 上的 ID,但依靠您的代码来确定访问权限。

于 2013-02-20T17:29:09.197 回答
1

也许最好的想法是使用简单的非线性算法修改散列之前的数字。也许是这样的:

<?php

$id = ($_GET['id']*3)+2;

$id = base_convert($id, 10, 36);

然后取消散列,只需反转算法:

<?php

$id = dase_convert($id, 36, 10);

$id = ($id-2)/3;
于 2013-02-20T17:34:42.883 回答
0

实施使用 GUID 作为您的身份。

GUID(全局唯一标识符)是 128 位值,因此如果您想获取某人的 ID,您需要进行大量猜测。

有多种工具可以生成 GUID,VS2010 有一个实用程序可以为您将 GUID 转换为纯文本,但我不知道如何从代码生成,因为我从来不需要,只是一次性用法。

GUID 对身份非常有用。:)

于 2013-02-20T17:26:55.000 回答