【发布时间】:2014-05-02 12:22:39
【问题描述】:
我需要设置一个主站点,将站点 1 和站点 2 嵌入 iframe,登录并在其中启动用户会话。
站点 1 (RoR) 和站点 2(未知框架)拥有自己的身份验证(用户名、密码、cookie、通常的框架安全性)。
主站点 (PHP) 服务器可以直接访问站点 1 数据库,并且我知道密码哈希算法,因此我可以针对站点 1 验证主站点的登录密码。如果需要,站点 2 可以相应地更改其密码,但没有访问数据库和框架。
很遗憾,我无法更改站点 1 或站点 2 中的任何内容。尽管存在对站点 1 的完全读取权限,但我只能围绕它进行构建。
我已经绘制了一个快速图表以更好地展示我的意思/需要:
a busy cat http://gettaxi.me/public_img/help.png
我需要在 iframe 中启动用户会话。站点 1 的登录凭据与主站点相同,因为它们来自同一个数据库,站点 2 的凭据将被假定为相同(如果不是,则可能仅显示登录失败)。
到目前为止的想法列表:
我可以将登录凭据记录到主站点 cookie 中,并使用它来填充 iframe 字段。也许存储加密版本并在需要时解密?但是,将密码存储在 cookie 中(甚至是加密的)似乎很荒谬。
与上述相同,但将其存储在主站点会话变量中。
跨域 cookie 的想法在这里似乎毫无用处,因为每个网站都必须设置自己的会话 cookie,一个网站不能为另一个网站设置它...
我以前从未像这样处理过任何跨域的事情。因此,在我开始编写可能会或可能不会工作的疯子之类的东西之前,我向您寻求帮助和建议!您将如何实现这一目标?这可能吗?
其他问题:
站点 1 和站点 2 在 iframe 中设置的 cookie 的行为是否相同?它们是否持久,如果我以后打开同一个网站而不是 iframe,它们会被接受吗?
如果存储凭据(cookies/会话)是唯一的方法:那么我将如何在 iframe 中填充登录字段并提交表单? Javascipt?一些巧妙的 GET/POST/重定向技巧?
提前致谢!
【问题讨论】:
-
您至少愿意解释一下否决票吗?
-
大多数人都对“你会怎么做”这样的问题感到厌烦......除非他们是由具有高代表的人提出的,否则他们完全没问题。就像责备人们和制造离题的cmet一样。随着这个社区的集体编码智慧和这些问题的出现频率,一次又一次,废话,也许有权力的人会意识到 SO 的代码审查部分不会吸引人们。可能只是一个理解的事情,但如果他们改变它,信徒就不能拖钓桥和拍人们的手。我们都知道这不可能发生:)
-
出于这个原因...我支持您,先生!我认为这是一个经过深思熟虑的问题,并且因为我过去曾有过类似的任务,所以我很高兴看到回复。
标签: javascript php html iframe cross-domain