【问题标题】:Is it safe to put my model ids into my forms?将模型 ID 放入表单中是否安全?
【发布时间】:2013-11-22 17:54:13
【问题描述】:

我记得在某些 cmets 中看到有人说将模型记录的 id 公开到网页不是很安全。我尝试寻找一些解决方法,但找不到任何关于喜欢的特定文档。

有人知道为什么会这样以及是否应该避免吗?还有如何避免?

【问题讨论】:

    标签: ruby-on-rails security rails-models


    【解决方案1】:

    黑客对 ID 唯一能做的就是在您的数据库中查找它,如果他们能做到这一点,那么无论如何您已经被淹没了。这就是为什么此类 ID 被称为“虚构”的原因,因为它们与现实中的任何其他东西(例如社会安全号码)无关。

    有时应该,有时不应该,将 ID 放入 URI - http://example.com/myController/42。如果您这样做,请保护您的页面,以便未经授权的用户无法轻易更改号码并查看他们可以找到哪些记录。但无论如何,您都需要这种安全性,即使您使用“slug”来查找记录,因为用户可以四处寻找不同的 slug。不使用 /42 的主要原因是 URI 是可用性封装的一部分,它们应该是有文化的并且对用户友好。

    我一直将数据库 ID 放在 HTML ID 中,以使它们独一无二,例如 <input type="text" name="username" id="username_42" />。这仍然同样安全。

    【讨论】:

    • 蛞蝓是什么意思?
    • “蛞蝓”以前的意思是一排铅字。打印机将蛞蝓堆叠成一列,以组装一份报纸。今天,“slug”意味着“简短的简化字符串”,其中“Top Gun Coder”可以被称为“top-gun-coder”。此页面上的 URI 有一个记录号 /20151390/ 和一个 slug:is-it-safe-to-put-my-model-ids...
    • 我真的很喜欢使用此页面的这些示例!感谢您的帮助!
    【解决方案2】:

    不是。您的用户 ID 位于此问题中您姓名的链接中,问题 ID 就在 URL 中。唯一不安全的是,如果您允许知道 ID 但无权访问的人做您不希望他们做的事情。

    安全性已内置于您的应用中,而不是您是否显示模型的 ID。

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 1970-01-01
      • 2021-08-20
      • 2018-10-16
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多