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