programing

"set Same Site cookie to none" 경고를 수정하는 방법

luckcodes 2022. 12. 27. 22:16

"set Same Site cookie to none" 경고를 수정하는 방법

크롬 확장을 만들고 popup.js에서 쿠키를 읽는 PHP 스크립트(Xhttprequest 사용)를 호출했습니다.다음과 같이 합니다.

$cookie_name = "mycookie";

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

하지만 확장자 오류에 대해 이 경고를 받습니다.

(여기 내 도메인이 있습니다)의 크로스 사이트 리소스와 관련된 쿠키가 다음과 같이 설정되어 있지 않습니다.SameSite기여하다.Chrome의 향후 릴리스에서는 사이트 간 요청이 다음과 같이 설정되어 있는 경우에만 쿠키가 제공됩니다.SameSite=None그리고.Secure. 개발자 툴의 [어플리케이션]> [스토리지]에서 쿠키를 확인할 수 있습니다.쿠키 및 자세한 내용은 https://www.chromestatus.com/feature/5088147346030592 및 https://www.chromestatus.com/feature/5633521622188032를 참조하십시오.

이런 쿠키를 만들려고 했는데 소용이 없었어요.

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

이 질문의 지시에 따릅니다.

저도 시행착오를 겪고 있지만 구글 크롬랩스 GitHub의 답변이 조금 도움이 되었습니다.메인 파일에 정의하면, 1개의 서드파티 도메인에 대해서만 동작했습니다.아직 테스트를 진행 중이지만, 더 나은 솔루션으로 이 답변을 업데이트하고 싶습니다.

저는 지금 PHP 7.4를 사용하고 있는데, 이 구문은 잘 작동하고 있습니다(2020년 9월).

$cookie_options = array(
  'expires' => time() + 60*60*24*30,
  'path' => '/',
  'domain' => '.example.com', // leading dot for compatibility or use subdomain
  'secure' => true, // or false
  'httponly' => false, // or false
  'samesite' => 'None' // None || Lax || Strict
);

setcookie('cors-cookie', 'my-site-cookie', $cookie_options);

PHP 7.2 이하를 사용하고 있는 경우(Robert의 답변은 다음과 같습니다)

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

호스트가 이미 PHP 7.3으로 업데이트 되어 있다면 (Mahn의 코멘트 덕분에) 다음을 사용할 수 있습니다.

setcookie('cookieName', 'cookieValue', [
  'expires' => time()+(7*24*3600,
  'path' => '/',
  'domain' => 'example.com',
  'samesite' => 'None',
  'secure' => true,
  'httponly' => true
]);

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

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

코드 전체를 참조해 주세요.https://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md, 에는 다음 코드가 있습니다.same-site-cookies너무.

새로운 기능이 등장하면서SameSite=None쿠키도 다음과 같이 표시해야 합니다.Secure그렇지 않으면 거부당하게 됩니다.

크롬 업데이트 및 이 블로그 게시물에서 변경에 대한 자세한 내용을 확인할 수 있습니다.

주의: 질문과는 직접 관련이 없지만, 웹 사이트를 개발하는 동안 처음에 제가 우려했던 문제였기 때문에 이곳에 도착한 다른 사람들에게 도움이 될 수 있습니다.

질문에서 서드파티 사이트(제 경우는 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>";

Ubuntu 18.04 / Apache 2.4.29 / PHP 7.2 설치는 mod_headers를 설치하여 수정하였습니다.

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에서는 "항상"을 사용하지 않는 것이 효과가 있었지만, 문서에서는 모든 베이스를 커버하고 싶다면 "항상"을 포함하거나 포함하지 않고 디렉티브를 추가할 수 있다고 합니다.저는 그것을 테스트하지 않았습니다.

JavaScript를 사용하여 쿠키가 설정되는 OP 문제가 발생하는 경우:

document.cookie = "my_cookie_name=my_cookie_value; expires=Thu, 11 Jun 2070 11:11:11 UTC; path=/";

대신 다음을 사용할 수 있습니다.

document.cookie = "my_cookie_name=my_cookie_value; expires=Thu, 11 Jun 2070 11:11:11 UTC; path=/; SameSite=None; Secure";

그것은 나에게 효과가 있었다.자세한 것은 이쪽.

프로젝트에서 JavaScript Cookie와 Java Cookie Util을 모두 사용하고 있습니다.다음 설정을 통해 문제가 해결되었습니다.

자바스크립트 쿠키

var d = new Date();
d.setTime(d.getTime() + (30*24*60*60*1000)); //keep cookie 30 days
var expires = "expires=" + d.toGMTString();         
document.cookie = "visitName" + "=Hailin;" + expires + ";path=/;SameSite=None;Secure"; //can set SameSite=Lax also

JAVA Cookie(Nginx에서 proxy_cookie_path 설정)

location / {
   proxy_pass http://96.xx.xx.34;
   proxy_intercept_errors on;
   #can set SameSite=None also
   proxy_cookie_path / "/;SameSite=Lax;secure";
   proxy_connect_timeout 600;
   proxy_read_timeout 600;
}

Firefox에서 결과 확인 여기에 이미지 설명 입력

자세한 것은, https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite 를 참조해 주세요.

언급URL : https://stackoverflow.com/questions/58191969/how-to-fix-set-samesite-cookie-to-none-warning