“SameSite 쿠키를 없음으로 설정”경고를 수정하는 방법은 무엇입니까? 크롬 확장


41

크롬 확장 프로그램을 만들고 popup.js에서 쿠키를 읽는 PHP 스크립트 (Xhttprequest 사용)를 호출했습니다. 이처럼 :

$cookie_name = "mycookie";

if(isset($_COOKIE[$cookie_name]))
{
    echo $_COOKIE[$cookie_name];
}
else{
    echo "nocookie";
}

그러나 확장 프로그램의 오류가 발생하면이 경고가 표시됩니다.

(여기 내 도메인 임)의 교차 사이트 리소스와 관련된 쿠키가 SameSite속성 없이 설정되었습니다 . Chrome의 이후 릴리스에서는 SameSite=None및 로 설정되어있는 사이트 간 요청이있는 쿠키 만 제공합니다 Secure. Application> Storage> Cookies 아래 개발자 도구에서 쿠키를 검토하고 https://www.chromestatus.com/feature/5088147346030592https://www.chromestatus.com/feature/5633521622188032 에서 자세한 내용을 볼 수 있습니다 .

나는 이와 같은 쿠키를 만들려고했지만 도움이되지 않았습니다.

setcookie($cookie_name,$cookie_value, time() + 3600*24, "/;samesite=None ","mydomain.com", 1);

질문의 지시를 따르십시오 .


또한 https를 의미하는 "보안"이라고 말합니다.
wOxxOm

이 예제를
Code Cooker

당신은 사용할 수 있습니다 타사 라이브러리를 제공, PHP 5.4+에서 쿠키를 관리하기 위해 setcookie추가 인수를 교체 $sameSite. 인수는 또는 None일 수 있습니다 . OOP 인터페이스도 사용할 수 있습니다. LaxStrict
까악 까악

답변:


24

나는 또한 "시련과 오류"에 있지만 Chrome Labs의 Github의 답변은 약간 도움이되었습니다. 나는 그것을 주 파일로 정의했으며 하나의 타사 도메인에서만 잘 작동했습니다. 여전히 테스트 중이지만 더 나은 솔루션 으로이 답변을 업데이트하고 싶습니다. :)

내 서버와 같이 7.2까지 PHP가있는 경우 :

header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');

또는 호스트가 이미 7.3으로 업데이트 된 경우 다음을 사용할 수 있습니다.

setcookie('cross-site-cookie', 'name', ['samesite' => 'None', 'secure' => true]);

쿠키를 확인하기 위해 시도 할 수있는 또 다른 방법은 아래 플래그를 활성화하는 것입니다. "이 변경으로 인해 영향을받는 모든 단일 쿠키에 대해 콘솔 경고 메시지를 추가합니다."

chrome://flags/#cookie-deprecation-messages

에서 전체 코드를 참조하십시오 : https://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md를 , 그들에 대한 코드를 가지고 same-site-cookies너무.


PHP 7.3을 사용하고 있으며 (헤더 및 setcookie)를 모두 사용했지만 PayPal 스크립트가있는 페이지를로드 할 때 여전히 SameSite 경고가 표시됩니다 ...하지만 여전히 localhost에 있습니다. 차이가 있습니까?
LuBre

@LuBre 흠. 아직 이런 식으로 테스트하지는 않았지만 말이됩니다. 또한 로컬 호스트에 SSL이 있습니까?
Dimas Pante

1
슬프게도 int는 localhost 문제가 아니며 온라인 에서도이 경고가 발생합니다. 나는 그것이 페이팔쪽에 뭔가라고 말할 것입니다 ...
LuBre

흠 ... ... @vir us 아래 의견이 귀하의 문제에 적합하다고 생각합니다. PayPal은 아직 그것에 대해별로 신경 쓰지 않을 것입니다 : P
Dimas Pante

1
새로운 PHP 7.3 구문을 제공해 주셔서 감사합니다. 문제가 해결되었습니다
billynoah

24

새로운 기능이 등장함에 따라 SameSite=None쿠키도로 표시 Secure되거나 거부됩니다.

크롬 업데이트 및이 블로그 게시물 의 변경 사항에 대한 자세한 정보를 찾을 수 있습니다.

참고 : 질문과 직접 ​​관련이 없지만 내 웹 사이트를 개발하는 동안 처음에 관심이 있었으므로 여기에 방문한 다른 사람들에게 유용 할 수 있습니다.

당신이 질문에서 경고가 표시되는 경우 목록 일부 제 3 자 사이트 (내 경우는 google.com, 허이었다) 것을 - 수단 것을 그들은 그것을 해결하기 위해 필요가 없습니다 귀하의 사이트와는 그것의 아무것도. 물론 경고에서 사이트를 언급하지 않는 한 추가하면 사이트 Secure를 수정해야합니다.


6
>= PHP 7.3

setcookie('key', 'value', ['samesite' => 'None', 'secure' => true]);

< PHP 7.3

exploit the path
setcookie('key', 'value', time()+(7*24*3600), "/; SameSite=None; Secure");

Emitting javascript

echo "<script>document.cookie('key=value; SameSite=None; Secure');</script>";

1
답변에 대한 설명 정보를 추가하십시오
Lizesh Shakya

이 페이지에서 실제로 효과가 있으며 프로덕션 환경에서 작업중인 유일한 답변은 다음과 같습니다. D
Robert Greene

1
문서에서 배열 키는 소문자 여야합니다. link
최악의

1
이것은 PHP 5와 Joomla 및 Chrome에서 나를 위해 일했습니다!
헤이든 던지기

1

mod_headers를 설치하여 Chrome 80 용 Ubuntu 18.04 / Apache 2.4.29 / PHP 7.2 설치를 수정했습니다.

a2enmod headers

Apache VirtualHost 구성에 다음 지시문 추가 :

Header edit Set-Cookie ^(.*)$ "$1; Secure; SameSite=None"

그리고 Apache를 다시 시작하십시오.

service apache2 restart

문서를 검토 할 때 ( http://www.balkangreenfoundation.org/manual/en/mod/mod_headers.html ) "항상"조건에 동일한 응답 헤더 풀에서 작동하지 않는 특정 상황이 있음을 알았습니다. 따라서 "항상"을 사용하지 않는 것은 PHP에서 저에게 효과적이지만 모든 문서를 다루려면 "항상"유무에 관계없이 지시문을 추가 할 수 있다고 제안합니다. 나는 그것을 테스트하지 않았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.