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

크롬 확장 프로그램을 만들고 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);

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



답변

나는 또한 “시련과 오류”에 있지만 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너무.


답변

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

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

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

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


답변

>= 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>";


답변

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에서 저에게 효과적이지만 모든 문서를 다루려면 “항상”유무에 관계없이 지시문을 추가 할 수 있다고 제안합니다. 나는 그것을 테스트하지 않았습니다.


답변