php - 我应该在应用程序前端隐藏数据库主键(id)吗

标签 php sql security-by-obscurity

我正在开发一个允许版主编辑用户信息的应用程序。 所以,目前,我有这样的 URL

http://xxx.xxx/user/1/edit
http://xxx.xxx/user/2/edit

我在这里有点担心,因为我直接公开了数据库中的用户表主键 (id)。 我只是从 URL 中获取 ID(例如:从上面的 URL 中获取 1 和 2),使用 ID 查询数据库并获取用户信息(当然,我清理了输入,即来自 URL 的 ID)。

请注意:

我正在验证每个请求以检查版主是否有权编辑该用户

这就是我正在做的。这样安全吗?如果没有,我应该怎么做?

我可以想到一个替代方案,即为具有 25 个字符键的用户表设置一个单独的列,并使用 URL 中的键和查询数据库中的这些键

但是,

  • 这有什么区别? (因为 key 现在暴露了)
  • 通过主键查询比其他列更快地产生结果

最佳答案

这是安全的(并且似乎是最好的方法),只要管理员权限的验证是正确的并且您可以防止 SQL 注入(inject)。你提到了这两个,所以我会说你很好。

关于php - 我应该在应用程序前端隐藏数据库主键(id)吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23221086/

相关文章:

security - 为什么通过默默无闻来实现安全是一个坏主意?

google-analytics - 隐私、保护、默默无闻

php - 如何扩展字符串中的变量

java - hibernate 插入到选择

php - 为 symfony2 应用程序创建远程更新服务

mysql - 包含 MySQL 函数 - 意外结果

c# - SQLite 数据源路径奇怪的问题?

php - 如何在 symfony 中输出 xml?

javascript - 日语文本替换在 WordPress 中无法使用 JavaScript