【发布时间】:2009-04-20 14:05:08
【问题描述】:
问题
在 RESTful Web 应用程序中使用时,自动增量标识列是否应该具有非默认种子/增量?
背景
我正在开发我的第一个 ASP.NET MVC 应用程序并尝试保持我的网址 RESTful。该应用程序没有单独的管理网站。我使用属性来控制谁可以访问站点的哪些部分,以及根据他们在系统中的角色,当前用户可以看到哪些菜单项。我(大部分)遵循 ActiveRecord DB 模式并为我的表(包括用户表)使用合成 id,其中 id 是自动生成的标识列。
今天早上我突然想到,在 RESTful 应用程序中为身份列使用默认种子存在细微的安全风险。如果您假设管理 ID,尤其是最强大的 ID,通常首先在应用程序中创建,那么它们将是系统中编号最小的 ID。虽然实际上并没有在应用程序中打开一个漏洞,但使用种子/增量的默认值可以使破解者更容易通过使用 RESTful 操作(例如 ChangePassword - 这是其中之一)定位低编号的 id 来攻击高价值目标ASP.NET MVC 站点模板中的开箱即用操作)。
我是否应该将设置一个非默认种子至少添加到我的用户表到我的安全最佳实践库中?这样做的效果值得吗?还是我太偏执了?作为一个相关问题,我是否应该更改帐户相关操作的现成模板名称。
【问题讨论】:
标签: asp.net-mvc security model-view-controller rest