8

好的,所以我需要做的是能够将来自远程站点的登录屏幕放在 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>
4

1 回答 1

7

很可能是不可能的...

这很可能是不可能的,因为您的本地主机和远程主机之间的主机不同,因此 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。然而,这不是一个简单的项目,需要大量的工作才能正常运行。

于 2012-09-10T18:15:43.463 回答