首页 文章

使用简单身份验证从HTTP重定向到HTTPS

提问于
浏览
6

我希望得到一些关于如何使用带有ember-simple-auth的ember初始化程序将用户从HTTP重定向到HTTPS的建议 .

`import ENV from 'cio/config/environment'`

SSLInitializer =
  name: 'ssl'
  before: 'simple-auth-cookie-store'
  initialize: (container, application) ->
    application.deferReadiness()

    # Redirect if hitting HTTP and SSL is enabled
    if ENV.SSL and window.location.protocol is "http:"
      window.location.href = "https:" + window.location.href.substring(window.location.protocol.length)
      return false

    application.advanceReadiness()

`export default SSLInitializer`

但是,即使if语句的计算结果为true,cookie似乎也会失效 . 我尝试了几件事,包括:

  • 之前:'simple-auth'

  • 之前:'store'
    在设置window.location.href之前,if语句中的

  • application.destroy()

据我所知,经过调试 . 该应用程序确实重定向到HTTPS,但在document.cookie中找不到cookieName . (https://github.com/simplabs/ember-simple-auth/blob/master/packages/ember-simple-auth-cookie-store/lib/simple-auth-cookie-store/stores/cookie.js#L154

在此方法有效之前,因为我们在index.html中有简单的代码段,但是我们希望将它保存在初始化程序中 . 有什么建议?

谢谢!

1 回答

  • 4

    您真的应该强制从服务器重定向从HTTP到HTTPS,因为从客户端执行此操作不会增加任何真正的安全性 .

    想一想,用户已经从不安全的 endpoints 将应用程序下载到他们的浏览器,从那时起就没有任何东西可以信任了 . 即使是基于服务器的重定向也存在问题,因为它依赖于来自不受信任的 endpoints 的重定向建议 . 用户应该真正从最初的可信起点访问内容,否则所有赌注都将被取消 . 这被称为安全引用问题,由于SSL证书背后的商业模式,可能永远无法解决 .

    您也不应该信任来自受信任HTTPS域中不受信任的HTTP域的cookie,除非您有办法在客户端上验证这些cookie . HTTP / HTTPS之间的cookie共享在RFC 2109(第4.2.2节Set-Cookie语法)中介绍 .

    这意味着:

    • 使用"Secure"设置的cookie仅在HTTPS上可用

    • 没有"Secure"的cookie集将在HTTP或HTTPS上可用 .

相关问题