3

我正在使用 iframe 方法编写一个新的画布应用程序。我的后端对画布响应同时支持 HTTP 和 HTTPS,但默认情况下,Facebook 似乎将用户置于 HTTP 上,并通过 HTTP 直接以纯文本形式发送所有重要的凭据(即 signed_request 有效负载中的访问令牌等)。这当然是共享网络上的一个安全漏洞(咖啡店、办公室等,在那里嗅探访问令牌是微不足道的。)

如何强制我的所有画布请求通过 HTTPS 运行,并保护我的用户凭据?

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

4

1 回答 1

0

您可以使用 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)。

于 2012-07-23T17:03:12.653 回答