通过iframe登录到远程站点
log in to a remote site through an iframe
好的,所以我需要做的是能够将远程站点的登录屏幕放在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。然而,这不是一个容易的项目,需要大量的工作才能顺利运行。
- JavaScript滚动脚本-在测试中激发,而不是在开发站点上
- 通过iframe登录到远程站点
- Javascript移动站点重定向问题
- JQuery-在本地工作,但未定义$,仅在部署的站点上定义
- 火灾在卸载前确认警报仅适用于外部站点
- Cordova/Phonegap在主要的Cordova网络视图中加载外部站点
- 在WordPress站点中加载jquery.js后加载javascript代码
- sharepoint站点的internet explorer中出现Javascript错误
- MVC3站点脚本和CSS未加载
- API用于跨站点脚本
- Wordpress ajax使用多站点登录
- IE8/Javascript冲突?IE8正在开发中冻结整个站点-包括Javascript列表
- 移动站点重定向与完整的站点链接
- Javascript从外部站点获取html
- 当站点不是其URL的根时,如何在getJSON调用中定位API
- 使用webpack反应静态站点
- 如何使用jQuery模拟多页面站点
- Jquery无休止滚动加载来自其他站点的内容
- JavaScript:将所见即所得编辑器对实时站点的更改转换为jQuery操作
- 测试站点 + 实时站点上的分析