外部网站安全问题的用户登录表单

时间:2014-03-04 10:38:45

标签: jquery ajax post iframe

鉴于这种假设情况,什么是安全的解决方案?

大型社交网络(SN)网站希望为开发人员提供登录解决方案,用户可以直接从开发人员站点登录(而不是重定向到社交网站进行身份验证/例如OAuth),这意味着将是开发人员网站上的登录表单,用户可以在该网站上提供他们在SN网站上使用的用户名和详细信息。

我的一些想法

我能想到的第一个解决方案是使用ajax请求发布详细信息,并提供JSONP回调,其中包含成功登录,用户名/密码错误或用户信息(如电子邮件地址等)等信息。此解决方案充满了发布最大的问题,SN网站是否可以信任每个开发人员?当用户登录时,他可以在数据库中发送存储用户密码的ajax请求。或者用户可能甚至没有启用JavaScript(尽管忽略了最后一期)!!

或者,SN站点可以提供用户可以登录的iframe,并且可以调用父帧上的函数。我能用这个解决方案考虑的唯一安全风险是,如果SN iframe src页面中存在任何xss漏洞,但这是不存在的,因为没有页面包含用户提交的数据。

我永远不会在应用程序中考虑这一点,我只是想扩展我对功能的了解。

3 个答案:

答案 0 :(得分:2)

简短回答是

为什么的解释已经由您提供(对于您描述的两个假设解决方案)。

  1. 如果表格实际上是"坐着"在您的网站上,您可以窃取数据(用户名+密码输入上的简单javascript)。没有合理的SN站点会将此权限授予第三方开发人员。

  2. 如果表格没有"坐着"在您的网站上,您可以窃取数据(请查看以下stackoverflow question),而不是您网站上的 iframe
    顺便说一下,这就是为什么有些网站阻止他们的登录页面在检测到页面位于iframe时被加载的原因

  3. 这就是发明 OAuth 等身份验证流程的原因!像这样的解决方案(基于令牌并保持第三方应用程序的登录过程 out )是目前唯一的#34;安全"存在且正在使用的解决方案,这是由于第三方开发人员可能邪恶的风险。

    顺便说一句,facebook登录通过打开一个小窗口而不是在开发者网站之外进行完全重定向来提供良好的用户体验。

    有这个想法
    假设(我从未见过这样的解决方案,我永远不会使用如果我公开认证服务,因为它有点愚蠢我可以很容易为网络钓鱼目的而模仿)您可以执行以下操作:

    使用一些封闭的客户端技术(例如oldie Java Applets或类似的东西)创建一个登录页面,让第三方在他们的页面中对其进行处理。 applet应该在将数据发送到服务器之前对其进行内部加密。

答案 1 :(得分:0)

许多Login API使用密钥和JSON。因此,如果我连接到社交网络(SN),它将需要我的开发人员密钥和应用程序密钥。这是许多安全检查中的第一个。在SN验证该请求来自注册开发者的应用程序之后。服务器端将检查json文件中的每个条目以进行注入等。 SN可能做的另一个系统是检查请求的位置。他们可能要求开发人员通过开发人员的服务器发送信息,从而能够跟踪来自开发人员服务器ip的请求。通过这种方式,开发将为他们提供额外的安全性。

SN可以信任每个开发人员吗?不,他们真的不能。某些API密钥要求开发人员付费才能使用,或者需要严格的注册过程才需要开发人员提供个人信息。这样,如果开发人员进行任何欺诈活动,他们就可以被告上诉讼。我希望这会有所帮助。

- Note-- 哦,要添加,您永远不会想要远程使用登录。而是让用户登录主SN网站。然后,用户可以添加开发人员的应用程序以使用他们的一些信息。作为SN,您永远不会希望让开发人员访问您的用户密码。

答案 2 :(得分:0)

您所描述的主要问题是用户必须愿意将他们的SN用户名/密码输入第三方网站。只有极其天真的用户才会这样做。 (所以,就像他们中的97%一样。)

至于SN为支持所述第三方所必须做些什么,答案是什么都没有。第三方可以简单地向用户提供他们自己的表单,从用户接收凭证,并尝试使用它们登录SN。该表单甚至可以看起来像SN的登录表单,并在它旁边有一点锁定,以使一些用户认为它是安全的。只要SN没有做任何事情来防止来自第三方的登录,例如限制来自同一IP的登录次数,它就会起作用。 (当然,这可以通过使用更大的源IP地址池来解决。)

从SN的角度来看,一个安全的解决方案是培训他们的用户永远不会将他们的凭据提供给第三方,即使第三方声称没问题。当然,正如最近所证明的那样,即使是国家安全局也无法培训自己的员工不要分享他们的密码,因此SN可能会打一场艰苦的战斗。

相关问题