是否应该使用暴露的自动递增PK?

时间:2014-05-17 17:18:05

标签: php mysql sql security database-design

如果互联网上的用户可以通过浏览器输入http://example.com?pk=123来查看主键或检索与其相关的数据,建议不要使用自动递增PK,而是使用PK等由PHP生成的bin2hex(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM))?整数键可能稍微快一些,并且通过类型转换更容易验证,但它们可能会给用户太多信息。请提供合理的答案。谢谢

1 个答案:

答案 0 :(得分:1)

从不?不,当然不是永远不会。在大多数情况下,暴露自动增量整数就可以了。 (例如,Stack Overflow在整个地方暴露您的用户ID 1032531,没有任何不良影响。)可能存在暴露一个不可接受的情况,但这通常基于安全问题,而不是技术问题。它完全取决于与您的应用程序相关的安全问题。

请注意,在数据库中使用随机排序的主键通常会有严重惩罚。详细信息将取决于您使用的特定数据库引擎和架构,但在某些情况下可能非常重要。尽可能避免使用随机主键 - 如果可能,请使用顺序主键和单独的随机键作为公开可见的标识符。