Php 安全弹出式登录可能吗?

Php 安全弹出式登录可能吗?,php,javascript,jquery,security,https,Php,Javascript,Jquery,Security,Https,我有一个登录表单,它隐藏在每个页面上,并在需要时显示自己,而不是设置一个新的页面请求 我注意到,为了使登录真正安全,表单操作应该指向https页面,但登录表单本身也应该位于https页面上 有没有一种方法可以在不使用整个站点https的情况下确保弹出式登录表单的安全?除了用SSL协议包装整个站点,唯一的另一种选择是让弹出表单成为一个IFRAME,指向另一个页面,该页面的表单位于HTTPS连接上。如果初始请求由HTTP提供,并且您使用相同的通道提供“HTTPS”链接/表单等,攻击者只需将该HTTP

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

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


有没有一种方法可以在不使用整个站点https的情况下确保弹出式登录表单的安全?

除了用SSL协议包装整个站点,唯一的另一种选择是让弹出表单成为一个IFRAME,指向另一个页面,该页面的表单位于HTTPS连接上。

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

这一点已通过以下实例得到证明

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

当然,我假设你会有这样的链接,将由。。。这样,您必须使用AJAX弹出窗口(或iframe)仅为子站点/一个虚拟主机创建SSL证书,该弹出窗口(或iframe)在
http://
页面上(理论上)指向
https://
,这会出现两个问题:

  • 攻击者可以拦截该页面并用自己的链接替换该链接
  • 这会阻止用户检查其连接到的站点
  • 第一个问题与(不是特定于AJAX弹出窗口,而是通过普通HTTP登录页面)。这与:

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

    本质上,MITM可以修改您用于服务器登录框的页面,将其替换为自己的页面:用户将无法注意到差异(至少在为时已晚之前)

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

    当通过HTTPS提供初始页面时,也可能发生此问题,不幸的是,这一点已被证明(这些人应该更清楚,真的!)


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

    您会选择这两个选项中的哪一个?我想SSL包装器会减慢速度,iframe会增加膨胀……如果您的脚本在单击弹出iframe时动态注入iframe,这不会增加开销。我必须同意这一点。如果可能的话,为了安全连接,应该避免使用Iframe。所以SSL包装器是唯一的安全选项?老实说,如果你那么担心安全性,我会把整个站点放在SSL证书后面。问题解决了。它不会给现有流程增加任何开销,并解决您的问题。话虽如此,您必须记住,如果您将表单提交到HTTPS站点,那么您在这一点上几乎被覆盖了。如果他们在活动连接中主动输入密码,情况会有所不同,但网站不是这样工作的。当他们连接到您的站点时,他们会将所有内容下载到浏览器中。当他们提交表格时,它是在一个安全的连接上。我认为这是可能的。您可以尝试使用一个JavaScript函数打开一个带有HTTPS地址的登录弹出窗口。您的意思是“攻击者将简单地将HTTPS更改为HTTP”?攻击者将使用任何中间人攻击工具将HTTPS与HTTP交换。