2013-05-15 47 views
3

我一直在想这个和关闭,并做了一个快速测试与Facebook。假设你有一个类似Facebook的网站并将其分解为图像和配置文件。您选择与朋友分享或不分享的图像。很显然,在数据库中,如果元数据是共享的,它与谁共享等元数据上应用了值。资源,如图像,并确保他们

现在说我查看特定的形象,所以我现在已经为资源(在这个例子中的图像)的HTTPS URL。此时,可以在不登录的情况下查看资源,也可以查看任何类型的令牌。您拥有该网址,将其加载到任何浏览器中,然后您就可以看到该资源。当然,它是在SSL层提供的,它们有相当长的,复杂的名称,但我可以在不进行身份验证的情况下查看它。

我不禁想,这是可以做的最好?这种类型的内容可以安全吗?如果你有一个直接的URL,你不能加载它?那些可能更敏感的文件呢?如果有人有路径,他们现在可以永远访问该资源吗?在这种情况下,OAuth可以提供任何帮助吗?

我想我只是想大声对这些资源如何被保护,所以,如果我直接打了一个网址,我不会总是得到这个资源不被认证。我可能错过了另一个流程或方法吗?如果是这样,性能和安全性之间的平衡和权衡是什么?希望研究可扩展的选项。

+0

投下这个问题是愚蠢的。 – Michael

+0

另一个投票呢?真。也许人们应该实际评论或添加到这篇文章。有趣的我认为堆栈溢出是为了分享想法... – Michael

+0

同意。如果您对此投票,请留下评论为什么。海事组织这个问题没有错。安全性对于软件开发非常重要,完全依赖于主题。 –

回答

2

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

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

+0

如果你有脸书资源的网址,你可以查看它,不管你有什么权限,即使你没有通过身份验证。要自己测试它,只需上传图片并将其设置为可见。使用chrome打开开发人员工具,然后转到网络选项卡。然后您可以查看请求的资源的URL。注销Facebook,清除缓存或打开您从未使用Facebook进行身份验证的浏览器。您将能够查看该图像。所以上述问题和意见仍然存在。你有没有办法保护你已经知道URL的资源?在这种情况下,图片 – Michael

+0

@迈克尔我相信你关于Facebook是脆弱的,但我所说的仍然是。这是一个不常见的漏洞。 Facebook让我感到不安,但我可以向你保证这并不常见。您必须了解服务器/ Web应用程序的工作方式。仅仅因为资源被请求并不意味着它被返回。 HTTP请求通过并传递给Web应用程序。 Web应用程序可以随意响应,没有任何东西强制它返回请求的资源。在ASP.NET中,我根据经过身份验证的用户的HashMap检查请求者的会话ID。 –

+0

验证完成后,我再检查资源的ACL以查看用户是否被授权。如果两者都检查,那么我按要求返回资源。如果有什么不对,我会返回一个HTTP 403 Forbidden。 –