如果用户可以知道项目的主键 id,这是否是一种不好的做法,安全方面

Is it bad practice, security-wise, if user could know the primary key id of items

我正在用数据库中的项目列表填充一个页面(比方说 main.htm - 每个项目都有一个 link,打开 link 将显示项目。

我正在使用 ajax 打开项目。出于性能原因,我已将其 ID 的数据属性添加到 main.htm 中的每个项目。所以如果 main.htm 列出了 15 个项目,每个项目都会有一个数据 ID,例如项目 1 的数据 ID =1,项目 2 的数据 ID=2

data-id对应数据库中的ID列(主键)。

从安全角度来看,这是一种不好的做法吗?如果是,为什么?

或者更好的做法是加密数字而不是 id,分配加密的 id,例如 xY4lf3K,它将在 DB

中解密为 1000

这不应该是一种不安全的方式,只要您牢记:

  1. 始终转义并验证用户输入(记住,$_GET 参数是用户输入,而不仅仅是 $_POST);
  2. 如果 ID 标识的资源是针对特定用户的,请检查是否是该用户正在访问它。

否则,没有问题。