facebook - 我可以要求 Canvas URL 使用 HTTPS 来保护signed_request 内容吗?

标签 facebook security oauth facebook-iframe facebook-canvas

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

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

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

最佳答案

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

关于facebook - 我可以要求 Canvas URL 使用 HTTPS 来保护signed_request 内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7746496/

相关文章:

c# - Windows Identity Foundation 中的 TrustedIssuers

iOS OAuth 1.0 requestToken 用户授权 : how do I detect when a UIWebView is done with the authorizing?

ios - 更新 FacobookLogin Pod,出现错误 : No known class method for selector 'objectForJSONString:error:'

c - 这个 C 用户输入代码容易受到攻击吗?

Android:关于通过HTTP进行安全和用户认证(注册、登录)的一些问题

http - OAuth 2.0 - 为什么授权服务器在资源所有者凭据无效时返回 400 而不是 401?

react-native - 在 React Native 上通过 Auth0 进行 Instagram 身份验证(不是登录)?

android - facebook 分享图像 Url 以及 android 中的链接

facebook - 如何在 Open Graph 中引用好友?

php - Facebook Graph API 获取公共(public)页面的公共(public)帖子