我正在使用iframe方法编写一个新的画布应用程序。我的后端同时支持HTTP和HTTPS的画布响应,但似乎在默认情况下,Facebook将用户放在HTTP上,并通过HTTP直接以纯文本形式发送所有重要的凭证(例如,signed_request有效负载中的访问令牌等)。当然,这是共享网络(咖啡店、办公室等)上的一个安全漏洞,在这些地方,嗅探访问令牌是微不足道的。
如何强制所有canvas请求通过HTTPS操作,并保护我的用户凭据?
我认为所有的开发人员都应该想--或者被要求--去做这件事。虽然我是Facebook开发的新手,但令我惊讶的是,他们不会使用HTTPS来直接传输用户访问令牌。OAuth1.0提供了通过HTTP使用访问令牌的机制(因为请求必须由客户端应用程序签名),但HTTPS2.0取消了所有这些机制,转而支持对任何具有嵌入凭据的请求使用Oauth。Facebook帮助设计了OAuth 2.0,并通过在canvas请求中偏离HTTPS2.0的使用来破坏设计的安全性。
发布于 2012-07-24 01:03:13
使用PHP或JavaScript可以很容易地做到这一点。您所要做的就是检测用户是否正在使用HTTP,并将其重定向到HTTPS。示例:
<script>
if ( window.location.protocol == 'http:' ) {
window.top.location = 'https://facebook.com/yourapp';
}
</script>上面的代码将检查iframe是否使用HTTP加载。如果是,它会将父URL (即facebook)重置为指向您网站的HTTPs版本(因此也会使用HTTPS加载iframe )。
https://stackoverflow.com/questions/7746496
复制相似问题