2011-10-12 25 views
3

我正在使用iframe方法编写一个新的画布应用程序。我的后端支持HTTP和HTTPS作为画布响应,但默认情况下,Facebook将用户放在HTTP上,并通过HTTP直接以纯文本形式发送所有重要凭据(即signed_request负载中的访问令牌等)。这当然是共享网络(咖啡店,办公室等)的安全漏洞,在这种情况下嗅探访问令牌是微不足道的。)我是否可以要求使用HTTPS for canvas url来保护signed_request内容?

如何强制所有画布请求通过HTTPS进行操作并保护我用户凭据?

我认为所有的开发者都应该想要或者需要这样做。虽然我是Facebook开发新手,但我很惊讶他们不会使用HTTPS来进行所有用户访问令牌的直接传输。 Oauth 1.0具有通过HTTP使用访问令牌的机制(因为请求必须由客户端应用程序签名),但OAuth 2.0取消了所有这些,赞成使用HTTPS来处理任何带有嵌入凭证的请求。 Facebook帮助设计了OAuth 2.0,并通过偏离画布请求中的HTTPS使用来破坏设计的安全性。

回答

0

您可以使用PHP或JavaScript轻松完成此操作。您只需检测用户是否使用HTTP并将其重定向到HTTPS即可。示例:

<script> 
if (window.location.protocol == 'http:') { 
    window.top.location = 'https://facebook.com/yourapp'; 
} 
</script> 

上述代码将检查iframe是否使用HTTP加载。如果是,它会重置父URL(即Facebook)以指向您的网站的HTTP版本(因此也使用HTTPS加载iframe)。

+0

谢谢,但是在这个JavaScript执行的时候,重要的会话凭证已经通过HTTP以明文方式发送了。为了确保会话安全,它必须从一开始就是HTTPS ... – Yetanotherjosh

+0

您可以随时从App设置中删除用于访问您的应用的非安全URL。 –

相关问题