【发布时间】:2013-11-22 17:54:13
【问题描述】:
我记得在某些 cmets 中看到有人说将模型记录的 id 公开到网页不是很安全。我尝试寻找一些解决方法,但找不到任何关于喜欢的特定文档。
有人知道为什么会这样以及是否应该避免吗?还有如何避免?
【问题讨论】:
标签: ruby-on-rails security rails-models
我记得在某些 cmets 中看到有人说将模型记录的 id 公开到网页不是很安全。我尝试寻找一些解决方法,但找不到任何关于喜欢的特定文档。
有人知道为什么会这样以及是否应该避免吗?还有如何避免?
【问题讨论】:
标签: ruby-on-rails security rails-models
黑客对 ID 唯一能做的就是在您的数据库中查找它,如果他们能做到这一点,那么无论如何您已经被淹没了。这就是为什么此类 ID 被称为“虚构”的原因,因为它们与现实中的任何其他东西(例如社会安全号码)无关。
有时应该,有时不应该,将 ID 放入 URI - http://example.com/myController/42。如果您这样做,请保护您的页面,以便未经授权的用户无法轻易更改号码并查看他们可以找到哪些记录。但无论如何,您都需要这种安全性,即使您使用“slug”来查找记录,因为用户可以四处寻找不同的 slug。不使用 /42 的主要原因是 URI 是可用性封装的一部分,它们应该是有文化的并且对用户友好。
我一直将数据库 ID 放在 HTML ID 中,以使它们独一无二,例如 <input type="text" name="username" id="username_42" />。这仍然同样安全。
【讨论】:
/20151390/ 和一个 slug:is-it-safe-to-put-my-model-ids...
不是。您的用户 ID 位于此问题中您姓名的链接中,问题 ID 就在 URL 中。唯一不安全的是,如果您允许知道 ID 但无权访问的人做您不希望他们做的事情。
安全性已内置于您的应用中,而不是您是否显示模型的 ID。
【讨论】: