通过iframe而不是Pop Up验证社交网络登录

时间:2011-12-17 18:23:18

标签: jquery authentication login social-networking

我已将各种社交网络登录方法集成到我的网站中。他们都使用弹出窗口进行身份验证。

是否可以使用iframe代替。

每次尝试时,程序都会启动,但不会记录用户。它接缝不能正确重定向。

已编辑 -

我做了一些调试,我认为问题在于加载的PHP文件中的javascript函数。

在弹出版本中,这是javascript函数。

window.opener.wsl_wordpress_social_login({
        'action'   : 'wordpress_social_login',
        'provider' : '<?php echo $provider ?>'
    });

    window.close();

因此,使用我的iframe函数,我创建了它。

window.parent.document.getElementById('iframe').wsl_wordpress_social_login({
        'action'   : 'wordpress_social_login',
        'provider' : '<?php echo $provider ?>'
    });

FIREBUG告诉我这个::

    window.parent.document.getElementById("iframe").wsl_wordpress_social_login is not a function
[Break On This Error] 'provider' : 'Facebook' 

1 个答案:

答案 0 :(得分:1)

我知道你正在引用“使用google登录”或“使用facebook登录”按钮来实现你网站的oauth?

如果是这样,那么将结果窗口放在iframe中将使您能够在使用javascript输入时获取用户的google或fb密码。我不确定如何,或者即使已经完成,但我的猜测是,即使iframe中加载的页面是https,您仍然可以在加密并发送到用户输入之前捕获用户输入服务提供商然后将其重定向到您自己的服务器。当然你可能不关心用户的密码,但用户如何知道这一点?出于这个原因,虽然有可能,但如果用户尝试使用iframe将您登录到服务提供商,则不应信任您的网站。

我已经考虑过做同样的事情,因为它会使登录体验更漂亮(没有讨厌的弹出窗口,也没有重新指向其他网站,这打破了我自己网站的良好连续流量),但是我没有继续进行,因为安全隐患。

另外,从我所看到的情况来看,服务提供商(例如google和fb)会尽其所能阻止他们的登录窗口不是父窗口(即防止你问的问题)。有可能破解服务提供商的代码,以便绕过这些要求,但如果你这样做,你可能会发现你的域名禁止向你篡改其代码的服务提供商发出api调用。

相关问题