web-dev-qa-db-ja.com

Codeigniter 3 csrf保護のSameSite属性

CORSを相互に呼び出すアプリケーションがあります。 2020年4月のGoogleでは、SameSite Cookie = noneが必要になります。 https://www.chromestatus.com/feature/5633521622188032

chrome version 80+なので、chromeブラウザを使用するすべてのユーザーがこのcsrfエラーに影響を与えます。PHP 7.3

enter image description here

2

問題は解決しました

1.フレームワーク内のすべてのCookieについて、application/config/config.phpにこの構成を追加します

ini_set('session.cookie_samesite', 'None');
ini_set('session.cookie_secure', TRUE);

2. system/core/Security.php行でこの行を編集します〜273置換元

setcookie(
                        $this->_csrf_cookie_name,
                        $this->_csrf_hash,
                        $expire,
                        config_item('cookie_path'),
                        config_item('cookie_domain'),
                        $secure_cookie,
                        config_item('cookie_httponly')
                );

setcookie($this->_csrf_cookie_name, $this->_csrf_hash, ['samesite' => 'None', 'secure' => true,'expires' => $expire, 'path' => config_item('cookie_path'), 'domain' => config_item('cookie_domain'), 'httponly' => config_item('cookie_httponly')]);

csrfサポートのSameSite属性。

1

これと同じ問題がありましたが、PHP 7.2および私のCI 3.Xです。この問題は、applications/config/config.phpファイルに次の変更を加えることで解決されました。

$config['cookie_prefix']    = '';
$config['cookie_domain']    = ''; 
$config['cookie_path']      = '/; SameSite=None';
$config['cookie_secure']    = TRUE;
$config['cookie_httponly']  = FALSE;
1
Wilker Alves