session - 登录页面使用 SSL,未加密的页面看不到加密的 session cookie(Grails、Acegi)

标签 session grails ssl cookies spring-security

设置:Grails 1.1,Acegi/Spring Security 插件

我希望用户通过 SSL 登录,所以我的 channelConfig.secure[] 列表中有“/login/**”,但几乎所有其他内容都在 channelConfig.insecure[] 中。每个对/login 的请求都被重定向到 https://,每个其他请求都被重定向到 http://。

我的问题是登录过程将 cookie 设置为“仅通过加密连接发送”,因此当登录页面重定向到/home 时,主页看不到 cookie 并将我重定向回登录页面。当我尝试再次登录时,登录页面会看到 cookie 并重定向我...等等。

我搜索了 this page about SecurityConfig查看是否有允许通过 SSL 创建的 cookie 通过未加密的 HTTP 读取的选项,但我什么也没找到。有没有我可以设置的选项,使我的登录 cookie 可用于我的未加密 Controller ?

最佳答案

这将是一个漏洞。

任何可以看到 session cookie 的中间人都可以作为用户发出请求。这几乎和密码被截获一样糟糕。中间人无法自己建立新 session ,但一旦用户登录,他就可以做用户可以做的任何事情。


使用 SSL 不仅仅是简单地在登录时隐藏用户名和密码。

首先,它为客户端和服务器之间的所有消息提供 secret 性。很容易将密码识别为敏感数据,但哪些应用程序功能也使用敏感数据可能并不那么明显。保护任何用户输入和动态生成的内容比尝试仔细评估应用程序中使用的每个数据字段的隐私问题更安全、更容易。图片、帮助页面等静态内容可能不那么敏感,但通过分析对该内容的请求,攻击者可能会很好地了解用户在网站上做什么。

其次,SSL 为每个请求提供完整性。这可以防止攻击者修改或附加他们自己的恶意输入到用户请求,或修改服务器产生的结果。

关于session - 登录页面使用 SSL,未加密的页面看不到加密的 session cookie(Grails、Acegi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/988046/

相关文章:

grails - 如何将引用映射到具有复合键ID的对象

grails - Grails Commons DBCP池与Tomcat JDBC池

javax.net.ssl.SSLHandshakeException HttpsURLConnection

angularjs - 在后端的 typescript/angular2 环境和 nodejs 中设置持久 session 时遇到问题

javascript - 如何理解session和flash?

具有Hasmany字符串的Grails/GORM条件查询

java - Azure Redis SSL集群+Lettuce Java(编辑: lettuce version < 4. 2)

amazon-web-services - AWS Elastic Beanstalk Namecheap SSL 配置

asp.net - 如何设置asp :DropDownList SelectedValue to a Session Variable?

php - 如何将 PHP session 与 REST 客户端应用程序一起使用?