为了账号安全,请及时绑定邮箱和手机立即绑定

公开数据库ID - 安全风险?

公开数据库ID - 安全风险?

至尊宝的传说 2019-09-19 15:13:24
我听说暴露数据库ID(例如在URL中)存在安全风险,但我无法理解原因。关于为何存在风险或为何不存在风险的任何意见或联系?编辑:当然访问是作用域的,例如,如果你看不到资源,foo?id=123你会得到一个错误页面。否则URL本身应该是秘密的。编辑:如果URL是秘密的,它可能包含生成有限的生成令牌,例如有效1小时,只能使用一次。编辑(几个月后):我目前的首选做法是使用UUIDS作为ID并公开它们。如果我使用序列号(通常用于某些DB上的性能)作为ID,我喜欢为每个条目生成一个UUID令牌作为备用键,并公开它。
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

在适当的条件下,暴露标识符不是安全风险。并且,在实践中,设计Web应用程序而不暴露标识符将是非常繁重的。

以下是一些要遵循的好规则:

  1. 使用基于角色的安全性来控制对操作的访问。如何完成这取决于您选择的平台和框架,但许多支持声明性安全模型,当操作需要某些权限时,该模型将自动将浏览器重定向到身份验证步骤。

  2. 使用编程安全性来控制对对象的访问。这在框架层面上更难做到。更常见的是,您必须在代码中写入内容,因此更容易出错。此检查不仅基于角色检查,还通过确保用户具有操作权限,还具有对要修改的特定对象的必要权限。在基于角色的系统中,很容易检查只有经理可以加薪,但除此之外,您需要确保员工属于特定经理的部门。

  3. 对于大多数数据库记录,条件1和2就足够了。但添加不可预测的ID可以被认为是一个额外的保险,或“深度安全”,如果你购买这个概念。但是,不可预测标识符是必需的一个地方是会话ID或其他身份验证令牌,其中ID本身对请求进行身份验证。这些应该由加密RNG生成。


查看完整回答
反对 回复 2019-09-19
  • 3 回答
  • 0 关注
  • 1013 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信