3

我一直在思考这个问题,并在 Facebook 上做了一个快速测试。假设您有一个类似 Facebook 的网站,并将其分解为图像和个人资料。您选择与朋友分享或不分享的图像。显然,在数据库中,如果元数据是否共享、与谁共享等,则在元数据上应用了一些值。

现在假设我查看了一个特定的图像,所以我现在有一个用于该资源的 HTTPS URL(本示例中的图像)。此时,无需登录或拥有任何类型的令牌即可查看资源。您有 URL,将其加载到任何浏览器中,您就会看到该资源。当然,它是在 SSL 层中提供的,它们的名称相当长、复杂,但我可以在不进行身份验证的情况下查看它。

我不禁想,这是可以做到的最好的吗?这种类型的内容能否得到保护,因此如果您有直接 URL,则无法加载它?那些可能更敏感的文件呢?如果有人有路径,他们现在可以永远访问该资源吗?在这种情况下,OAuth 可以提供帮助吗?

我想我只是在大声思考如何保护这些资源,所以如果我直接点击一个 URL,我不会总是在没有经过身份验证的情况下获得该资源。是否有其他我可能遗漏的过程或方法?如果是这样,性能和安全性之间的正确平衡是什么,权衡是什么?想研究可扩展的选项。

4

1 回答 1

2

在您描述的资源访问实现中,这将被视为漏洞。几乎每个 Web 应用程序都可以控制以确保请求的资源仅交付给经过身份验证和授权的用户。唯一不会出现这种情况的情况是使用不进行会话跟踪的简单服务器。很遗憾,Facebook 或任何知名网站在 2013 年都容易受到此攻击。这是我在 90 年代和 2000 年代初看到的很多漏洞。

大多数 Web 应用程序以某种形式维护用户会话的状态。当请求资源(例如通过 URL 的图像)时,会检查会话令牌(或其他方法)以确保用户已通过身份验证,并且用户有权在返回该资源之前请求该资源(访问控制) . 如果用户不检查,则请求被拒绝。

于 2013-05-16T00:10:26.247 回答