在外部网站的iframe中填充表单

时间:2012-03-14 05:00:17

标签: php javascript forms iframe login

我正在尝试编写一个php页面,它将在不同的iframe中加载几个不同的网站。其中一些网站需要用户登录。我需要做的是基本上允许用户只输入一次用户名和密码,然后填充所有其他表单(基本上使用相同的用户传递对登录)

现在我知道,因为那些是外部网站,你不能访问DOM,并且不允许使用XSS,但我想知道是否实际上有任何其他方法可以实现。

有人实际上建议我模拟按键并且有一个基本上会从一个字段到另一个字段的javascript并且基本上输入用户名并通过但是在做了一些研究后我不认为这是可能的,因为你只能模拟事件而不是实际按键所以...还有其他任何建议吗?

注意:我还检查了this,但在我的情况下不同意其他网站/域名!

谢谢 - 迈克

2 个答案:

答案 0 :(得分:1)

取决于。

如果这些网站共享一个域(父窗口和iframe),那么顶部窗口可以与子iframe通信。 AJAX可以防止跨域(包括子域间),但iframe 可以进行通信,只要它们属于同一个顶级域名。

请参阅https://stackoverflow.com/a/9338955/575527https://stackoverflow.com/a/9676156/575527

更好的方法是拥有一个“顶级域名Cookie”,其中该Cookie在所有这些iframe中都可见(假设它们具有相同的顶级域名)。使用单个登录页面登录一次,如果该用户已登录,则页面中的后续请求将需要检查cookie与会话。

或者如果这些页面具有不同的域但访问相同的数据库,则可以将会话ID作为url参数传递给iframe而不是cookie。然后,iframe中的网站将解析会话ID并检查数据库中的这些会话是否有效,是否是最新的,并且已登录。

所有这些都需要额外的CSRF和XSS检查,因为会话ID处于开放状态。

答案 1 :(得分:0)

您无法在JavaScript中执行所述操作。

但是,根据用户登录后您需要对数据/网站执行的操作,您可以使用远程POST来模拟该行为。有关详细信息,请参阅this question