【发布时间】:2011-07-24 21:17:07
【问题描述】:
我有一个用于 PHP5 应用程序的现有 MySQL 数据库架构。该应用程序是在一个流行的 MVC 框架中构建的(哪个并不重要)。我们使用 Doctrine ORM 1.2.x 作为 out ORM。
默认路由使用主 ID,在我们的例子中只是一个无符号自动递增整数。但是有些数据是敏感数据,虽然我们在 SSL 下运行,但更改 url 中的 ID 值可能会导致用户无权查看机密数据。
我认为的解决方案是使用一些模糊的值来代替更明显的记录 ID。
理想情况下,我们只需在受影响的表中添加一个新列,并为该记录生成一些唯一的随机或散列值,对吗?
但是,我可以想象到其他几个表/路由迟早需要相同的处理,并且希望有一个可重复使用的解决方案,可以避免一系列数据库更新。所以我一直在考虑替代方法,并想就是否有任何需要关注的重大问题发表意见。
- 简单地混淆值,即移位和/或 base 64 编码
- 快速而讨厌的加密
- 使用 hmac 确保给定的 id 与给定的 hmac 匹配
更新 正如Charles 所述,ACL 将是首选解决方案,但是该站点的某些部分对公众开放,因此这些区域的 ACL 是不可能的。但是,我们确实在应用程序后端广泛使用了 ACL。
【问题讨论】:
标签: php mysql security url authentication