我有一个主控制器,用于检查是否设置了会话安全性,如果没有,它将重定向到安全控制器。
问题是安全控制器是通过https,它检查密码并设置会话并重定向到主控制器。我无法通过http。
中的https访问会话集如何使用https并重定向到普通的http呢?我需要http和https
中的会话Anyideas?
修改
好的,我查了一下,如果不保证安全,那就不可能了。 一个选项是通过GET发送会话,但它显然不安全,那么如果在检查登录后我将它们重定向到https表单,将会话发布到正常的http页面,在html页面我检查标题并确保它来自我的https页面。 听起来对你来说安全吗??
答案 0 :(得分:0)
将您的整个应用设为HTTPS。附件是我用于几乎所有网站的块,将所有内容重定向到80到443。
##
# Sample config for a site needing SSL
#
$HTTP["host"] =~ "^ssl_example.localhost(:[0-9]+)?$" {
# Serve everything over HTTPS
$SERVER["socket"] == ":80" {
url.redirect-code = 301
url.redirect = ( "/(.*)" => "https://ssl_example.localhost:%1/$1" )
}
# This would be a great place to test SSL config for QA/Dev zones...
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = rootdir + "/etc/ssl/example.pem"
server.document-root = "/home/crosslight/ssl_example/default"
accesslog.filename = rootdir + "/var/log/ssl_example.log"
server.errorlog = rootdir + "/var/log/ssl_example.error.log"
server.tag = "Crosslight (lighttpd-1.4.28 + php-5.3.3) / SSL"
// CodeIgniter/Kohana rewrite rules
url.rewrite-once = (
"^/index\.php" => "/index.php", #truncate index.php?params to just index.php
#### Serve static content
"^/(static.*)" => "/$1",
"^/(blog.*)" => "/$1",
"^/(.*)$" => "/index.php/$1"
)
}
}
答案 1 :(得分:0)
为什么不让整个页面成为安全网站(https)的一部分?我没有办法做http => https转换没有在站点之间传递GET密钥。
如果您的逻辑是从房子的http侧的cookie获取会话ID(仅密钥)并在https端将其作为cookie(手动),我认为这不是一个如此巨大的安全问题在这所房子里面。然后,您可以执行正常的会话处理验证,以查看它是否是有效的会话。尽可能地将您的逻辑与滥用隔离开来。
在后端,您可以在站点之间共享会话信息,也可以根据检索到的会话ID触发从http到https的副本。取决于您的架构。