인생이 쓰다!인생쓰

개발/Server

쿠키 SameSite 속성 누락 - 취약점 검사

Johnal 2024. 11. 7. 15:31
반응형

 

 

 

이번에 취약점 검사를 진행하다 보니 문제가 있던 부분들이 꽤 있었는데( 매년  달라지는.. 취약점 😂) 

정리를 하다 보니 블로그에도 올리면 좋을 것 같아서 작성하게 됐습니다. 너무 힘들어요!! 보안!! 해킹 좀 그만해!!

여러 취약점이 있는데 오늘은 쿠키를 가지고 왔습니다. 시간이 날때마다 취약점 관련해서 작성을 하도록 하겠습니다.

 

 

 


SamSite 

일단 첫번째는 SamSite입니다.

쿠키의 SameSite 속성은 쿠키가 사이트 간 요청에서 특정 상황에서만 전송되도록 제한 및 결정하는 보안 설정입니다. 

주로 CSRF (Cross-Site Request Forgery)와 같은 공격을 방지하는 데 쓰입니다.

SameSite의 속성에는 총 3가지 값이 있습니다.

Strict , Lax , None 입니다.

 

1. Strict 

가장 높은 단계의 설정이라고 생각하시면 됩니다.

사용 중인 브라우저 및 동일 사이트에서의 요청에서만 쿠키가 전송됩니다.

주로 인증이나 장바구니 저장 및 구매 등에 사용하며 CSRF와 같은 공격을 방지하는 데 매우 효과적입니다.

단점으로는 가장 높은 단계의 설정이기도 해서 외부에서 사이트를 방문 시

로그인이나 인증정보가 유지되지 않을 수 있습니다. 

보안이 아주 강하지만, 사용자의 입장에서 제약이 많을 수 있습니다.

 


2. Lax

Strict보다는 조금 완화된 속성으로 , 일반적인 탐색요청 (주로 GET 방식)에서만 쿠키가 전송됩니다.

예를 들면 현재 사용 중인 사이트에서 다른 홈페이지로 링크를 타서 제품 할인을 받는 경우들이 있는데, 

이런 것을 따라간 것을 나타내는 쿠키를 설정하고 전송할 수 있습니다.

하지만 POST 같은 요청에는 쿠키가 전송되지 않습니다.

보안은 어느 정도 유지하면서 , 사용성에 크게 영향을 주지 않는다고 생각하시면 됩니다.

 

3. None

모든 요청이라고 생각하시면 됩니다. GET, POST, 동일한 사이트, 교차사이트 등 모든 요청에 대해 쿠키가 전송됩니다.

이 속성을 사용하려면 다음 글에 작성할 Secure 속성을 함께 설정해야만 쿠키가 HTTPS 연결에서 전송됩니다.

장점으로는 제 3자 콘텐츠 ( 외부 콘텐츠, 광고 기술, 또는 분석 제공) 이 쿠키를 사용할 수 있게 해 줍니다.

역시나 이렇게 열린 속성인 만큼 단점으로는 CSRF의 공격을 받을 수 있어서 보안에 주의가 필요합니다.

 

 

이처럼 쿠키의 SameSite 속성은 3가지가 있으며 상황에 따라 웹사이트의 용도에 맞게 걸면 될 것 같습니다.

로그인이 필요하지 않고 같은 출처에서의 요청에만 따른 사이트는 Strict가 좋고 

SNS나 광고 및 링크 클릭으로 사이트 방문이 빈번한 경우에는 Lax가 좋다고 생각합니다.

 


 

 

아파치 및 php로 설정하는 법을 알려드리겠습니다.

 

http.conf  파일 수정

Header always edit Set-Cookie ^(.*)$ $1;SameSite=Lax(속성

 

// PHP 7.3 이상
setcookie('cookie_name', 'cookie_value', [
    'expires' => time() + 3600,
    'path' => '/',
    'domain' => 'example.com',
    'secure' => true,        // HTTPS에서만 전송
    'httponly' => true,      // JavaScript에서 접근 불가
    'samesite' => 'Lax'      // 또는 'Strict', 'None'
]);

// PHP 7.2 이하에서는 직접 헤더를 설정
header('Set-Cookie: cookie_name=cookie_value; SameSite=Lax; Secure; HttpOnly');

 

 

 

 


 

 

 

 

보시고 유용한 정보가 되면 좋겠습니다.

부족한 부분이나 잘못된 부분이 있으면 댓글로 알려주세요. 추가 보충하겠습니다.!!!

그럼 이만~ 물러나겠습니다.

모두 안전한 보안 취약점 되세요~~ㅋㅋㅋㅋㅋ

 

 

 

728x90
반응형