在表单元素中存储主键值是一种好习惯吗?

Is it a good practice to store primary key values in form elements?

在表单元素中存储主键值以在表单提交后存储数据是一种好习惯吗?

例如,如果我的 form 中有一个 select 标签,如下所示:

<select name="city">
  <option value="3">Kolkata</option>
  <option value="7">Bangalore</option>
  <option value="1">Delhi</option>
  <option value="4">Mumbai</option>
</select>

在我的城市 table 它们是这样存储的:

Id  Name
--  ----
1   Delhi
3   Kolkata
4   Mumbai
7   Bangalore

提交表单后,提取值非常简单,我们直接获取外键值而不用查找城市table。

但是,我觉得这可能是一个主要问题,因为可以通过开发人员工具轻松地操纵这些值。

如果不是这种方法,一般和广泛接受的规范是什么?

编辑

由于有人建议此问题与 this 重复,我添加了我反对它的理由:

这个问题涉及开发人员遵循的一般做法,而另一个问题涉及遵循特定做法时的安全问题.

这是一个非常有效的选项,经常使用,很可能是最广泛接受的解决方案。

但是,对于从不受信任的计算机(Web 浏览器)传递到您的服务器的 所有 数据,您需要确保在执行操作之前验证数据它或将其保存到数据库中。您正确地指出有人可以将 select 的值更改为无效的 Id(例如 10)。如果收到无效的 ID,则应显示一条错误消息。