PHP에서 Same-site 쿠키
2020년 1월 13일 추가
SameSite 쿠키는 2018년 12월에 릴리스된 PHP7.3.0의
setcookie()
함수에서 지원되었습니다.7.3.0 미만의 PHP 또는 PSR-7 응답에 대해
Set-Cookie
헤더를 설정하려는 경우를 위해 bag2/cookie 라이브러리를 개발했습니다. 자세한 내용은 PSR-7과 원시 PHP에 대응하는 Set-Cookie 라이브러리를 만들었다 - 슈퍼 PHPer가 되자을 참조하십시오.최근 쿠키에서는 SameSite이라는 새로운 속성이 제안되었습니다. 이 기사에서는이 속성의 효능이나 부작용에 대해서는 언급하지 않습니다. 귀찮아서… .
PHP의 문제
PHP에서 쿠키는 Can I use에서 발행합니다. 문제는이 함수의 인터페이스입니다.
bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = FALSE [, bool $httponly = FALSE ]]]]]] )
속성 마다 인수로 건네주게 되어 있으므로,
setcookie()
가 들어갈 여지가 없는 것입니다.PHP 7.3에서 개선
PHP 기능 추가 제안SameSite에서는 올해 중 릴리스되는 PHP 7.3에서 추가될 예정입니다. 이 제안이 흥미로운 점은 인수의 수를 늘리는 것이 아니라 옵션 인수에 대한 연관 배열을 하나만 받는 것입니다.
bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, array $options ]]] )
즉, 이렇게 쿠키를 설정할 수 있습니다.
setcookie('hoge', 'fuga', 3600, [
'path' => '/',
'secure' => true,
'httponly' => true,
"samesite" => 'Strict',
]);
문제는 PHP 7.3의 기능 정지 예정일이 가까워졌는데 PHP: rfc:same-site-cookie 것입니다. (즉, 현재 릴리스 PR이 아직 병합되지 않았습니다.에도 반영되지 않습니다 )
기존 PHP에서 작업 라운드
그렇다면 PHP 7.3의 세계에 빠지지 않는 우리는 아직 SameSite의 혜택을 받을 수 없습니까?
위의 PR에서 흥미로운 예가 소개되었습니다.
PHP 7.3.0 알파 3
With PHP < 7.3 some people use a hack to add the samesite option (
path="xxx; samesite=..."
), but this doesn't work anymore in 7.3 ad the values are filtered. So we really need this to be implemented.이상한 목소리가 나왔네요... SameSite가 들어갈 여지가 있었는데, 이것이 일종의 인젝션일까요? ? 뭐 이 더티 해킹은 지금까지의 버전으로 움직이고 있기 때문에, 정식 대응하는 7.3에서도 동작 보장하지 않으면 안 되는군요, 같은 제안입니다.
그런 다음 이를 악용하면 PHP7.3 미만
SameSite
속성을 설정할 수 있습니다.setcookie('hoge', 'fuga', 3600, '/; SameSite=Strict', '', true, true);
세션에서 사용하는 경우 ,
session_set_cookie_params()
, php.ini 또는 PHP7 이상에서는 ini_set()에서 설정할 수 있습니다.요약
이것은 단 하나 취했다. 그러나, 이 사양 거동을 악용하면
session_start()
의 설정이 가능합니다.
Reference
이 문제에 관하여(PHP에서 Same-site 쿠키), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tadsan/items/96db7894e285743d996b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)