身份验证后加载iframe


Load iframe after authentication

我正在为这个特定场景寻找一个安全的解决方案:

  1. 我有一个index.php文件(比如www.my-app.com/index.php)
  2. 我必须通过HTTP将身份验证详细信息发布到www.domain.com/login
  3. 验证登录后,我必须在index.php中的iframe中加载响应

在研究过程中,我发现了以下解决方案,

解决方案1:使用javascript(jquery)/simple html表单提交用户名&www.domain.com的密码,并将目标作为的id那个特定的iframe。因此,应用程序加载到该iframe中。

我的看法是:这可能不安全,因为用户名和密码可能会被窃取,会话可能会被劫持。我不知道怎么做,但这似乎是可能的。(甚至可以在源中看到隐藏的变量)

解决方案2:

使用php-ccurl提交用户名&密码并在iframe。

(不太清楚如何实现。)

局限性:不是php方面的专家(我想这是显而易见的)。代码片段会有所帮助。

有没有其他方法可以以安全的方式实现相同的技术?

我看到脸书在他们的页面标签应用程序上也做了同样的事情。我相信大多数支付框架都是这样做的。但他们是怎么做到的?

我对CURL没有太多知识。它可能会帮助您获得第二个解决方案(PHP-CURL)

<?php
 $ch = curl_init('http://mysite.com/index.php');
 curl_setopt ($ch, CURLOPT_POST, 1);
 curl_setopt ($ch, CURLOPT_POSTFIELDS,"username=xyz&pwd=123");
 $result = curl_exec ($ch);
 curl_close ($ch);
?>

根据php手册:

  curl_exec() returns TRUE on success or FALSE on failure. 
  However, if the CURLOPT_RETURNTRANSFER option is set, it will return the result on success, FALSE on failure.

因此,您可以在iframe 中显示其他站点的结果

我必须通过HTTP将身份验证详细信息发布到www.domain.com/login

从您的安全问题来看,我了解到这些身份验证详细信息不是您应用程序的当前用户的信息,而是使用属于您的固定帐户访问domain.com服务所需的一般身份验证详细内容?

如果是这样的话,我会说这是被设计打破的。您不能让客户端以任何保存方式使用您的登录凭据登录到其他服务。

如果domain.com上的服务是你自己的,你必须考虑其他方法来验证客户端,而不必向该客户端提供登录凭据。

如果您使用的是第三方服务,请他们提供更好的解决方案。

顺便说一句,这和Facebook到底有什么关系?