用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2367|回复: 2
收起左侧

[内核] 采用https之后,cookie中Secure=true,然后csrf就失效了

[复制链接]
发表于 2018-11-29 10:06:50 | 显示全部楼层 |阅读模式
是用阿里云虚拟主机cdn配置的https,查看原因,是在Security.php是这样写的

public function csrf_set_cookie()
        {
                $expire = time() + $this->_csrf_expire;
                $secure_cookie = (bool) config_item('cookie_secure');

                if ($secure_cookie && ! is_https())
                {
                        return FALSE;
                }

                setcookie(
                        $this->_csrf_cookie_name,
                        $this->_csrf_hash,
                        $expire,
                        config_item('cookie_path'),
                        config_item('cookie_domain'),
                        $secure_cookie,
                        config_item('cookie_httponly')
                );
                log_message('info', 'CSRF cookie sent');

                return $this;
        }

是下面这句阻断了
if ($secure_cookie && ! is_https())
                {
                        return FALSE;
                }

所以如果cookie中Secure=true,然后设置成https,就不能使用csrf了吗?
发表于 2018-11-30 10:30:41 | 显示全部楼层
你是最新版的 3.1.9 吗?
 楼主| 发表于 2018-11-30 22:37:02 | 显示全部楼层
Hex 发表于 2018-11-30 10:30
你是最新版的 3.1.9 吗?

是3.1.9,之前不是3.1.9,后面下载了3.1.9,然后替换了整个system目录,虽然源代码有改动,但看逻辑似乎差不多,所以发帖问下

本版积分规则