Facebook graph api 从没有服务器的桌面客户端访问OAuth的正确方法
我正在开发一个扩展,它必须连接Facebook才能下载一些用户数据。我对OAuth舞蹈的细节有些陌生,并没有能够以期望的安全级别实现它。在当前的设置(有效)中,我担心不法分子劫持我的应用程序名称并使用它发布垃圾邮件 我尝试了许多不同的技术在我的扩展中实现OAuth(特别是使用Facebook登录)。当前设置使用Facebook graph api 从没有服务器的桌面客户端访问OAuth的正确方法,facebook-graph-api,google-chrome-extension,oauth-2.0,facebook-javascript-sdk,facebook-oauth,Facebook Graph Api,Google Chrome Extension,Oauth 2.0,Facebook Javascript Sdk,Facebook Oauth,我正在开发一个扩展,它必须连接Facebook才能下载一些用户数据。我对OAuth舞蹈的细节有些陌生,并没有能够以期望的安全级别实现它。在当前的设置(有效)中,我担心不法分子劫持我的应用程序名称并使用它发布垃圾邮件 我尝试了许多不同的技术在我的扩展中实现OAuth(特别是使用Facebook登录)。当前设置使用 在沙盒选项卡中打开OAuth弹出窗口 将redirect_url设置为special(不需要配置的重定向url),将auth_令牌参数设置为返回auth_令牌,而不是临时代码 将java
谢谢你,你的直觉是正确的。根据facebook的开发者文档: 原因正是您所说的,即使是在已编译、模糊的字节码中,使用现代方法对应用程序机密进行反向工程也相当简单,即使您使用的是https
这种情况下的最佳实践是使用托管api通过外部源代理所有登录,并将应用id和应用机密隐藏在单独的配置文件中。对,但使用Facebook的手动登录流和内部重定向url安全吗?这不需要应用程序机密。此外,有没有办法使用chrome扩展名://url作为重定向url?这是否安全?没有办法将chrome扩展url用作回调url。如果你仔细想想,这是很直观的。如果你给facebook的网址是chrome-extension://abcdefghijklmnopqrstuvwxyz/index.html ,这只在本地机器的上下文中才有意义,facebook将无法解析该地址并将其发送到任何有意义的地方。如果你愿意,你可以在一个随机的开放端口上启动一个服务器来监听facebook的响应,并将其用作回调url(注意,实际上不要这样做)。但是你会遇到防火墙、权限等仍然不安全的问题。一旦用户授予您的应用程序访问其数据的权限,作为开发人员,您有责任确保只有您的应用程序可以访问所述数据。只要你依赖任何形式的客户端身份验证,恶意用户就可以欺骗你的客户端请求,并使用你的应用程序凭据访问所述数据。Facebook肯定可以重定向到本地URL,如果是chrome扩展URL,这应该保证调用所需的扩展代码,因为Chrome扩展ID是由开发者的私钥生成的,并且是唯一的。黑客入侵Chrome浏览器超出了这个问题的范围。我担心的是允许Facebook在没有我自己服务器参与的情况下登录,这似乎会允许垃圾邮件发送者“通过”我的应用程序将邮件发送到受损的帐户。所有允许从“*”访问API的Facebook应用程序都会受到攻击。我打赌黑客们对此一无所知: