【问题标题】:Web security: reasons to not display row IDWeb 安全:不显示行 ID 的原因
【发布时间】:2016-06-14 09:53:44
【问题描述】:

问题。为所有用户显示数据库表行 ID 对安全性有害吗?如果有,为什么?

背景。我正在考虑在我的应用程序 url 中使用数据库表行 ID,如下所示:www.mysite.com/product/45/tshirt_blue,其中 45 是行 ID。我觉得这对安全不利,但我一直想知道为什么?

【问题讨论】:

  • 视情况而定——我想所有产品都应该是公开的,所以没有安全问题。如果您需要某种访问控制,则可能存在问题。见owasp.org/index.php/…
  • 访问部分我觉得应该不是问题。我将使用处理该部分的框架。但也许显示 ID 会显示我在表中有多少行 - 也许这对黑客来说是有用的信息?
  • 答案显然取决于您在使用它的环境中显示的信息的敏感性。任何属性都是如此,无论它是否是标识符。

标签: security web relational-database database-schema


【解决方案1】:

从数据库中引用主键会带来一些问题,无论是在安全领域还是在可维护领域。

安全性:直接引用您的行 ID 可以很容易地猜测其他产品,并可能绕过授权检查 (AuthZ)。虽然您永远不应该依靠默默无闻的安全性来保护系统,但这并不意味着您必须留下对整个 Web 应用程序中的 AuthZ 控件进行回归测试的说明。

可维护性:如果您计划拥有一个逻辑实体,“Blue Seahawks T-shirt”是相同的逻辑产品,但不同的数据库条目,例如 45 -> 145,这将很难维护。到该产品的所有链接现在都将被更改,并且书签和可能的搜索引擎都将被破坏,除非您总是映射 45 -> 145,然后再映射其他东西。将某种中间 ID 映射到后台相应的数据库条目将使您的链接保持一致。

【讨论】:

    猜你喜欢
    • 2010-11-26
    • 1970-01-01
    • 2012-02-04
    • 2015-07-15
    • 2012-09-05
    • 2021-03-16
    • 1970-01-01
    • 2013-07-12
    • 2017-07-08
    相关资源
    最近更新 更多