OWASP 网站建议这样做:
- 按用户或会话使用间接对象引用。这可以防止攻击者直接针对未经授权的资源。例如,不使用资源的数据库键,为当前用户授权的六个资源的下拉列表可以使用数字 1 到 6 来指示用户选择的值。[斜体我的]
- 检查访问。每次使用来自不受信任源的直接对象引用都必须包括访问控制检查,以确保用户被授权访问所请求的对象。[斜体我的]
因此,如果用户无权访问所请求的资源,那么混淆直接对象引用如何提高安全性?
考虑到例如 ASP.NET MVC 站点会增加的复杂性,除了银行站点之外,这是否值得为其他任何东西带来额外的麻烦?