我希望得到一些关于如何使用带有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 回答
您真的应该强制从服务器重定向从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上可用 .