Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 通过一些弹出窗口登录(通过https),同时浏览网站&;在同一页面上(通过http)_Html_Security_Ssl_Https - Fatal编程技术网

Html 通过一些弹出窗口登录(通过https),同时浏览网站&;在同一页面上(通过http)

Html 通过一些弹出窗口登录(通过https),同时浏览网站&;在同一页面上(通过http),html,security,ssl,https,Html,Security,Ssl,Https,我需要允许用户在浏览网站时登录到webapp。所以实际上他们可以用更少的权限浏览网站,为了获得完全的权限,他们必须登录。因此,我需要允许他们登录,同时保持他们在同一页面上,最好是通过对话框/覆盖或弹出式的东西,让他们登录,同时使用用户名/密码凭据在同一页面上 现在的问题是,我想通过http为整个站点提供服务&只需通过https登录/注册,那么当登录对话框显示在同一页面上时,如何从普通页面(用户当前正在浏览)上的http切换到https?最好是我想允许登录,而在同一页上。如何实现此行为?根据您的描

我需要允许用户在浏览网站时登录到webapp。所以实际上他们可以用更少的权限浏览网站,为了获得完全的权限,他们必须登录。因此,我需要允许他们登录,同时保持他们在同一页面上,最好是通过对话框/覆盖或弹出式的东西,让他们登录,同时使用用户名/密码凭据在同一页面上


现在的问题是,我想通过http为整个站点提供服务&只需通过https登录/注册,那么当登录对话框显示在同一页面上时,如何从普通页面(用户当前正在浏览)上的http切换到https?最好是我想允许登录,而在同一页上。如何实现此行为?

根据您的描述,我假定您正在查找隐藏位置栏的弹出窗口,无论它是不同的窗口(旧式弹出窗口)还是页面上的元素(AJAX式弹出窗口)

此类弹出窗口的主要问题是,它们往往会阻止用户检查URL。用户将无法检查是否使用了
https://
,是否与他们期望的站点一起使用,以及是否发生了证书验证错误

不幸的是,只有用户能够检查此项,不检查此项会使连接容易受到MITM攻击(例如,网络钓鱼)

如果你想要安全,用户需要能够检查他们登录的位置(不仅仅是你的主站点,还有他们输入密码的页面)

(此身份验证问题还与问题的第二部分有关:您不能真正使用自签名证书,因为您的用户不知道如何信任它。)

现在的问题是,我想通过http为整个站点提供服务


那就不用麻烦HTTPS身份验证了。如果您希望站点是安全的,那么您需要通过HTTPS为每个页面提供服务,否则您将以明文形式发送会话标识符之类的内容。你试图做的就像是建造一扇坚固的门,当墙是用薄纸做的时候,这是毫无意义的。

要添加到@Aurand和@Bruno的优秀答案(+1'd),你可以实现一个系统,匿名用户可以通过HTTP浏览网站,但在登录之前,当前页面会通过HTTPS重新加载。重新加载后,将显示AJAX模式登录对话框

因此:
HTTP
->用户单击
登录
->
HTTPS
->用户可以输入他们的
用户名
密码
->提交->停留在
HTTPS

如果你走这条路,一定要非常小心。我想到的主要事情是:

  • 对于设置为确保仅通过HTTPS传输的任何身份验证cookie,请使用
  • 用户登录后,所有站点活动都将保留在HTTPS上。您可以在注销后将用户返回HTTP进行匿名浏览
  • 在登录或注销时,您应该更新存储在cookie中的任何其他会话标识符令牌,以防止出现错误
  • 但是,理想情况下,所有会话标识信息应仅存储在设置了安全标志的身份验证cookie中
  • 您可以维护一个与身份验证cookie具有相同到期日期/时间的简单cookie,但此cookie不会设置安全标志。e、 g.
    LoggedIn=true
    如果在HTTP连接上遇到此cookie,则会将用户重定向到HTTPS版本,以便他们可以继续其会话(例如,返回到其验证会话被记住或仍处于活动状态的站点的用户)。在重定向到HTTPS时,验证用户的身份验证cookie,如果不成功,用户将返回到HTTP,而不使用
    LoggedIn=true
    cookie,以便他们可以匿名浏览或再次登录

但是,可能更容易将所有用户(包括匿名用户)始终重定向到HTTPS,记住在所有cookie上包含安全标志。性能受到的影响最小,因为。

我在一个ajax风格(页面上的元素)的弹出窗口中登录。但是我认为当我通过http浏览网站时,使用https登录是不可能的&这也不安全,不是吗!?那么,我应该专注于创建一个新的弹出窗口,比如谷歌、facebook的oauth对话框吗!?使用ajax stlye popup登录难道没有一种安全的方法吗?@user01,正如我所说的,没有,如果站点的其余部分也不是通过HTTPS登录,就没有一种安全的方法来进行ajax风格的登录。所以我总是有一个付费的解决方案来实现SSL,有没有任何方法可以免费或以比Verisign那些极不合理的价格更低的成本进行呢?但我看到大多数网站都是这样做的,例如linkedin登录是通过https,其他则是通过http。我还有一个类似的应用程序。@user01,这是完全不安全的。看看火羊队的进攻。网站一直在向纯HTTPS方向发展,因为越来越明显的是HTTP对任何数量的攻击都是开放的。这是一个荒谬的答案。即使网站内容已公开,您为什么不想保护用户的密码?许多人在多个网站上使用相同的密码,其中一些网站可能携带更需要隐私的数据。@shannon,因为这毫无意义。在许多其他攻击中,如果您从HTTP页面访问HTTPS页面,中间的人有办法剥离TLS或欺骗TLS并窃取您的密码。试图只保护网站的一小部分就会产生错误的安全感。最好的情况是浪费时间,最坏的情况是有害的,因为它诱使人们认为网站是安全的。你声称明文攻击的风险不比中间人攻击大,这是错误的。