안녕하세요.😘
저번에 이어서 보충 할게 있어서 쿠키 취약점검사로 찾아왔습니다.
이전에 SameSite 설명했을때 None속성을 사용했을때 꼭 필수로 넣어야 되는 속성이 있다고 했었죠?
그게 오늘 설명드릴 Secure 속성입니다.그리고 Secure와 같이 쓰면 좋은 HttpOnly 라는 속성입니다.
Secure
Secure 속성은 클라이언트와 서버 간에 전송되는 쿠키가 암호화된 연결(즉, HTTPS)에서만 전송되도록 하는 보안 설정입니다.보안되지 않은 HTTP로 전송되지 않으므로 공격자가 쉽게 접근할 수 없습니다.
즉 HTTP 연결에서는 전송되지 않아 네트워크 상에서 도청 공격(Man-in-the-Middle Attack)을 방지하는 데 도움이 됩니다.
이를 통해 네트워크 공격으로부터 데이터가 유출되는 위험을 줄일 수 있기 때문에
중요한 정보가 포함된 쿠키(인증 정보 및 Id 등 )에 설정하는 것이 좋습니다.ㅎㅎ
HttpOnly
웹 브라우저에서 JavaScript를 사용해 쿠키에 접근하는 것을 방지하는 보안 설정입니다.
HttpOnly 속성이 적용된 쿠키는 오직 서버 측에서만 접근이 가능하며, 클라이언트 측 JavaScript 코드에서는 접근할 수 없습니다. 를 들어, 일반적으로 document.cookie를 통해 쿠키를 읽을 수 있지만, HttpOnly가 설정된 쿠키는 JavaScript 코드에서 접근할 수 없습니다. 따라서 XSS(크로스 사이트 스크립팅) 공격자가 악의적인 스크립트를 삽입해 쿠키를 탈취하는 것을 방지할 수 있습니다.
이 부분은 꼭 취약점 검사에 한번씩 나오더라구요. Secure 속성이랑 같이 붙여주면 좋을 것 같습니다.
그러면 아파치 및 php로 설정하는 법을 알려드리겠습니다.
http.conf 파일 수정
# 모든 쿠키에 HttpOnly 속성 추가
Header edit Set-Cookie ^(.*)$ "$1;HttpOnly"
# HTTPS에서만 Secure 속성 추가
Header edit Set-Cookie ^(.*)$ "$1;Secure" env=HTTPS
// 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');
꼭 설정하시고 취약점 검사에 걸리지는 않는지 제대로 작동하는 지 확인하시기 바랍니다.
설정만 해놓고 놓치는 경우들이 꼭 생기더라구요ㅎㅎ
조금 급하게 작성하니라 놓친 부분들도 있을 것 같은데 기회가 되면 조금 더 수정해 놓겠습니다.
감사합니다. 그럼 저는 이만 물러나고 다음에 또 공부도 하며 유용한 보안 설정으로 오겠습니다.
'개발 > Server' 카테고리의 다른 글
Crontab 설정 (0) | 2024.11.16 |
---|---|
HTTP Content-Security-Policy 보안 컨텐츠 정책 설정 - 취약점 검사 (1) | 2024.11.15 |
쿠키 SameSite 속성 누락 - 취약점 검사 (4) | 2024.11.07 |