我一直在考虑这个问题,并在Facebook上进行了快速测试。假设您有一个类似Facebook的网站,并将其剥离为图像和配置文件。您选择与朋友分享或不与朋友分享的图片。显然,在数据库中,如果元数据是共享的,则会对元数据应用值,与之共享,等等。
现在说我查看了一个特定的图像,所以我现在有一个该资源的HTTPS URL(本例中的图像)。此时,无需登录或拥有任何类型的令牌即可查看资源。您有URL,将其加载到任何浏览器中,您就会看到该资源。当然,它是在SSL层中提供的,它们具有相当长的复杂名称,但我可以在不进行身份验证的情况下查看它。
我忍不住想,这是最好的办法吗?这种类型的内容是否可以保护,如果您有直接URL,则无法加载它?那些可能更敏感的文件呢?如果有人有路径,他们现在可以永远访问该资源吗?在这种情况下,OAuth可以提供任何帮助吗?
我想我只是在大声思考如何保护这些资源,这样如果我直接点击URL,我就不会在未经过身份验证的情况下获得该资源。我可能缺少另一种流程或方法吗?如果是这样,性能和安全性之间的平衡是什么以及权衡取舍是什么?想研究可扩展的选项。
答案 0 :(得分:2)
在资源访问实现中,您描述了这将被视为漏洞。几乎每个Web应用程序都可以控制以确保所请求的资源仅传递给经过身份验证和授权的用户。只有在没有会话跟踪的简单服务器时才会出现这种情况。很遗憾Facebook或任何声誉良好的网站在2013年都容易受到攻击。这是我在90年代和21世纪初看到的一个漏洞。
大多数Web应用程序以某种形式维护用户会话的状态。请求资源(例如URL映像)时,会检查会话令牌(或其他方法)以确保用户已通过身份验证,并且用户有权在返回之前请求该资源(访问控制) 。如果用户未检查,则拒绝该请求。