代码之家  ›  专栏  ›  技术社区  ›  Roman

访问受限Web资源的HTTP 403或404?

  •  0
  • Roman  · 技术社区  · 16 年前

    我的问题和这个很相似 Return “correct” error code, or protect privacy? 但是我想听听不同的答案。

    我们有网站,其中大部分网页可能会被未登录的用户访问。但是,当未登录的用户试图访问需要授权的资源(页面)(用户必须具有foorole角色)时,我们会自动将其重定向到登录页面,并在提供正确的凭据后返回到受限制的资源。如果用户提供了正确的凭据,但他的访问权限恰好不够(他有Barrole,但没有Foorole),那么该怎么办?

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

    也许这样的“自动重定向到登录”功能不好?你能告诉我在这种情况下,什么行为更“标准/良好/用户友好/免费”吗?

    谢谢!

    1 回复  |  直到 13 年前
        1
  •  1
  •   fyjham    16 年前

    我认为对于登录失败返回准确的403错误代码更合适。

    至于你的问题,模糊什么文件实际上存在的一般“安全通过模糊”(Buzzwords)被认为是一个非常差的安全模型,如果用户无论如何都不能访问这些URL,那么知道这些URL对用户没有好处(如果他们破坏了访问控制,我想有一个相当简单的方法来找到UR我去档案室)。

    但是,如果混淆文件名很重要,我建议未经身份验证的用户返回文件夹中的任何文件(无论是否存在)的403(本质上,您拒绝他们访问文件夹中的内容,因此错误代码对我来说似乎是合法的)。我可能会建议通过一个CustomErrors处理程序来实现这一点,该处理程序在决定要告诉您多少信息(这样,对于通过身份验证的人,您仍然会保持准确的404错误)之前区分您是否登录,或者通过一个httpmodule捕获404引发的异常,并为通过身份验证的人与未通过身份验证的人呈现不同的结果。指定用户。