-1

我的问题与此返回“正确”错误代码非常相似,还是保护隐私?,但我想听到一些不同的答案。

我们有 WEB 站点,其中大部分页面可能由未登录的用户访问。但是,当未登录用户尝试访问需要授权的资源(页面)时(用户必须具有 FooRole 角色),我们会自动将他重定向到登录页面,并在提供正确的凭据后返回到受限资源。如果用户提供了正确的凭据,但他的访问权限恰好不够(他有 BarRole 但没有 FooRole),应该做什么 WEB 站点?

在当前实现中,我们返回 HTTP 403 响应(禁止)。但是一些开发人员认为必须返回 404 代码,因为它提供了更好的安全性——用户不应该区分不存在和不可访问的资源。从安全的角度来看,返回 404 可能更好,但在所描述的情况下,用户被重定向到登录页面,并且该行为“暗示”该页面存在,因此返回 404 不是很合乎逻辑(这是我的想法)。如果用户已经被授权并尝试访问受限资源(直接修改 URL),那么,它可能在逻辑上返回 404 错误。

也许这种“自动重定向到登录”功能不好?您能建议我在这种情况下哪种行为更“标准/良好/用户友好/无黑客”?

谢谢!

4

1 回答 1

1

我相信为登录失败返回一个准确的 403 错误代码更合适。

至于您掩盖通常实际存在的文件的问题,“通过晦涩难懂的安全性”(流行语)被认为是一种非常糟糕的安全模型,如果用户无权访问它们,那么知道这些 URL 确实应该没有任何好处无论如何(如果他们破坏了访问控制,我认为有一种相当简单的方法可以找到文件的 URL)。

如果混淆文件名很重要,但是我建议为未经身份验证的用户返回文件夹中的任何文件(现有或不存在)的 403(基本上你拒绝他们访问查看文件夹中的内容,因此错误代码似乎是合法的对我来说)。我可能建议通过 CustomErrors 处理程序来执行此操作,该处理程序在决定告诉您多少信息之前区分您是否已登录(这样您仍然为经过身份验证的人保持准确的 404 错误)或捕获异常的 HttpModule 404 为经过身份验证的用户和未经身份验证的用户抛出并呈现不同的结果。

于 2009-11-21T05:44:43.030 回答