0

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

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

在研究时我发现了以下解决方案,

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

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

解决方案#2:

使用 php curl 提交用户名和密码并在 iframe 中加载 url。

(不是很清楚如何实现这一点。)

限制:不是 php 专家(我想很明显)。一个代码片段会有所帮助。

是否有另一种方法以安全的方式实现相同的技术?

我已经看到 facebook 对他们的页面选项卡应用程序做了同样的事情。我相信大多数支付框架都是这样做的。但他们是怎么做到的?

4

2 回答 2

0

我对 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

于 2012-07-26T11:45:09.897 回答
0

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

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

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

如果 domain.com 上的服务是您自己的,那么您必须想办法用它来验证客户端,而不必向该客户端提供登录凭据。

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

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

于 2012-07-26T11:54:42.977 回答