본문 바로가기
DEV/PHP

php 크롬 80 패치 KCP 결제 시 세션및 쿠키 이슈

by 황천의 쩌리맨 2022. 9. 26.
반응형

KCP 결제 연동작업도중 결제를 팝업이 아닌 이동형식으로 처리 하였더니 로그인 상태가 풀리는 현상을 발견하엿다.

세션및 쿠키값등을 디버그 해보았더니.. 왠걸.. 전부다 증발하는 현상이 발견되어 오전 내내 구글링을 하여 해답을 찾앗다.

 

세션의 경우 session_start(); 대용 함수 작성

function session_start_samesite($options = array()){
    $res = @session_start($options);
    $headers = headers_list();
    foreach ($headers as $header) {
        if (!preg_match('~^Set-Cookie: PHPSESSID=~', $header)) continue;
        $header = preg_replace('~; secure(; HttpOnly)?$~', '', $header) . '; secure; SameSite=None';
        header($header, false);
    }
    return $res;
}
session_start_samesite();
 
해당 위의 코드를 작업해서 config파일에 적용하였더니 세션값은 유지가 되었다.
쿠키의 경우
 
 
setcookie ($nm, $vals, $ts, "/", $BASE_DOMAIN); 에서 
 
setcookie($nm, $vals, [
            'expires' => $ts,
            'path' => '/',
            'domain' => $BASE_DOMAIN,
            'secure' => true,
            'httponly' => false,
            'samesite' =>'None',
        ]);
 
으로 변경. 
결과적으로 Samesite 설정으로 해결이 가능하다는것이 었는데 그러면 ngnix 나 apache2 에서 설정으로 해결해도 될문제지만 서버를 옴길경우 또 설정을 해야 하기에 소스로 해결하는 방법으로 해결하였다.
 
크롬은 매번 업데이트 마다 새로운 방법으로 개발자들을 괴롭히는듯.... 
그래도 이번 문제는 간단하게 해결이 가능한거 같다 ...
반응형

댓글