安全弹出登录可能吗?

时间:2012-01-17 00:02:00

标签: php javascript jquery security https

我有一个隐藏在每个页面上的登录表单,并在需要时显示自己onClick,而不是设置新的页面请求。

我注意到,为了使登录真正安全,表单操作应指向https页面,但登录表单本身应该在https页面上。

有没有办法让弹出式登录表单安全无需整个网站https?

3 个答案:

答案 0 :(得分:4)

https://页面上使用(理论上)http://的AJAX弹出窗口(或iframe)会出现两个问题:

  1. 攻击者可以拦截该页面并用自己的链接替换该链接。
  2. 这可以防止用户检查它所连接的站点。
  3. 第一个问题与this question有关(不是特定于AJAX弹出窗口,而是通过普通HTTP登录页面,also discussed on Security.SE)。这与this OWASP recommendation

    相反
      

    登录页面和所有后续经过身份验证的页面必须是   通过TLS专门访问。初始登录页面,简称   “登录登录页面”必须通过TLS提供。没有利用   登录登录页面的TLS允许攻击者修改登录   表单操作,导致用户的凭据被发布到   任意位置。

    基本上,MITM可以修改您用来服务该登录框的页面以用它们自己替换它:用户将无法注意到差异(至少在它为时已晚)。

    第二个问题是,看到你已连接(并且还要连接下一步)到地址栏中所需的网站,这实际上是一件好事。任何人都可以拥有有效的https://站点:mybank.example.comattackers.example.com都可以拥有受信任机构颁发的有效证书。 如果我连接到我的银行,我想知道我的银行是通过HTTPS连接的。从弹出窗口或iframe向https://网站发送凭据会隐藏真实的目标网站。

    当初始页面通过HTTPS提供时,也会发生此问题,遗憾的是3-D Secure system已经证明了这些问题(这些人应该知道更好,真的!)。

    简而言之,请勿使用iframe或弹出窗口,并通过HTTPS提供登录表单的页面。

答案 1 :(得分:2)

如果没有将整个站点包装在SSL协议中,那么唯一的另一个选择就是让弹出窗体成为一个IFRAME,指向另一个页面,其中的格式位于HTTPS连接上。

答案 2 :(得分:1)

如果HTTP正在提供初始请求,并且您使用相同的渠道提供“HTTPS”链接/表单等,则攻击者只需将该HTTPS更改为HTTP即可。

Firesheep

证明了这一点

您可以做的是通过HTTP提供HTTPS表单,但启用HTTP Strict Transport Security

当然,我假设您将拥有https://login.site.com之类的链接,这些链接将由http://www.site.com提供...这样您就必须仅为子站点/一个虚拟站点创建SSL证书宿主