【问题标题】:Submitting HTTPS over an iframe in IE problem在 IE 问题中通过 iframe 提交 HTTPS
【发布时间】:2011-03-12 02:43:15
【问题描述】:

我正在编写一个脚本来自动让你登录到一个项目的大本营......到目前为止,我已经想出了以下简单的东西,只是你提交到 iframe 的表单:

<html>
<head>
<style>
#bc1{ width: 100%; height: 350px; }
</style>
</head>
<body>

<iframe id="bc1" name="_bc1"></iframe>

<form method="post" id="bcform" action="https://launchpad.37signals.com/session" target="_bc1">
<input name="authenticity_token" type="text" value="PyweDIeBkqaAOltDviI/nOADpyrESRDf77R2v7W/6tM=" />
<input id="product" name="product" type="text" value="basecamp" /><br/>
<input autocapitalize="off" autocomplete="on" class="overlayable" id="username" name="username" title="Username" type="text" />
<input autocomplete="on" class="overlayable" id="password" name="password" title="Password" type="password" />
<input name="commit" type="submit" value="Sign In" />
</form>

</body>
</html>

这适用于除 IE8 之外的所有浏览器(大概是 7 和 6)

在文本框中输入您的大本营登录名/密码,然后点击登录试一试。

有谁知道为什么这会在 IE 中中断但在其他浏览器中有效?

【问题讨论】:

    标签: html forms iframe https basecamp


    【解决方案1】:

    如果您也没有通过 HTTPS 提供初始页面,则在 iframe 中使用 HTTPS 不会增加任何安全性,因为 iframe 本身的 URI 可能会被攻击者更改而用户不会注意到:

    HTTP and HTTPS iframe

    【讨论】:

    • 实际上,它确实增加了一些安全性,因为现在可以发布凭据,而不是作为查询字符串的一部分发送。因此,使用 iframe 至少可以防止密码在服务器访问日志中显示为明文。
    • @Leven,使用 POST 或 GET 与是否使用 iframe 无关。当然,在 GET 中使用密码通常是个坏主意。
    • @Brunoa,在某些情况下确实如此。想象一下出现在 HTTP 托管页面上的登录弹出表单。由于同源策略,您无法从该页面向 HTTPS 执行 Ajax POST。尽管使用 JSONP,GET 仍然是可能的,但是您在查询字符串中发送密码。使用通过 HTTPS 加载的 iframe 但是可以通过 HTTPS 进行 POST,这在我看来更安全。
    • @Leven,同样的问题,你不应该使用从 HTTP 页面到 HTTPS 页面的 Ajax 登录系统。能够检查您当前所在的页面上是否使用了 HTTPS(并且它是具有有效证书的正确地址)以及您输入凭据的位置,这对于安全性至关重要。因此,iframe 和 Ajax 弹出窗口都很糟糕。 POST/GET 的区别就变得无关紧要了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多