通过iframe登录到远程站点

log in to a remote site through an iframe

本文关键字:站点 程站点 iframe 登录 通过      更新时间:2023-09-26

好的,所以我需要做的是能够将远程站点的登录屏幕放在iframe中,当他们单击登录按钮时,它会将他们登录到远程站点,然后将本地页面更改为第2页到目前为止,我只做了很少的事情。如果这不可能,我是否可以创建一个本地登录,将信息传递到远程站点并获取cookie,然后加载下一个本地页面?

<html>
<head>
    <title>
    </title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" >
    <style type="text/css">
    #outerdiv
    {
        width:400px;
        height:360px;
        overflow:hidden;
        position:relative;
    }
    #inneriframe
    {
        position:absolute;
        top:-125px;
        left:-802px;
        width:2000px;
        height:2000px;
    }
    </style>
</head>
<body>
    <div id='outerdiv'>
        <iframe src="http://www.99designs.com/login" name="myiframe" id='inneriframe' scrolling=yes></iframe>
    </div>
</body>
</html>

很可能不可能

这很可能是不可能的,因为本地和远程之间的主机会不同,所以JavaScript不允许您访问iframe内容,因为所有浏览器都使用Same origin policy

http://en.wikipedia.org/wiki/Same_origin_policy

实现这一点的唯一方法是,如果其他网站不采用XSS保护,并允许您直接获取/发布登录URL到他们的网站。这真的取决于谁控制什么。。。如果您拥有并控制本地和远程站点,那么这将是可能的。如果没有,它不太可能,并且会遇到各种可能的问题(即,如果远程站点更改其登录工作方式,您的系统将崩溃,或者无法对登录-注销过程进行精细控制,因此您将无法实现自己的错误处理)

我想我想说的是你不应该依赖XSS漏洞。

为什么要防止这种事情发生

如果你仔细想想,如果以上不是真的,那么当你在网站上冲浪时,邪恶的人会在后台做很多非常强大和可怕的事情。例如,如果你可以使用JavaScript在主机之间通信到一个隐藏的iframe中,那么没有什么可以阻止某人编写一个隐藏脚本,该脚本导航到facebook,依赖于你的浏览器存储的用户名和密码,登录,然后开始发布/删除/交友(这只是一个温和的例子,不涉及信用卡详细信息或政府网站)

其他选择

实现这些功能的最佳方法是使用服务器端脚本语言,如php、asp、java、node.js、ruby、lisp、perl或python。脚本语言在使用外部资源方面往往没有限制。同样,只要外部网站支持一个简单或开源的登录系统,你就应该能够将一些东西组合在一起,而不是允许你的JavaScript通过AJAX使用服务器端脚本作为代理登录。例如,您可以通过PHP使用cURL发布到外部网站并检索该网站返回的cookie。然而,这不是一个容易的项目,需要大量的工作才能顺利运行。