PHP 개발에서 Session_Get_Cookie_Params () 및 Session_SET_COOKIE_PARAMS () 는 세션 관련 쿠키 매개 변수를 얻고 설정하는 데 사용되는 두 가지 매우 중요한 기능입니다. 일반적 으로이 두 기능은 세션의 보안과 안정성을 보장하는 데 함께 사용됩니다. 그러나이 두 기능을 사용할 때 특별한주의가 필요한 세부 사항이 있습니다. 특히 세션 쿠키의 동작에 영향을 줄 수있는 URL을 통해 세션 정보를 전달해야 할 때 특히 그렇습니다.
session_get_cookie_params () 함수는 쿠키의 이름, 경로, 도메인, 만료 시간 및 보안 플래그를 포함하여 현재 세션의 쿠키 매개 변수를 반환하는 데 사용됩니다. 이 정보는 브라우저에 저장된 세션 쿠키에 영향을 미칩니다.
$params = session_get_cookie_params();
echo 'Cookie domain: ' . $params['domain']; // 현재 세션을 받으십시오 cookie 도메인 이름
이 함수는 다음 키 값 쌍이 포함 된 배열을 반환합니다.
수명 : 쿠키의 수명주기 (초).
경로 : 쿠키로가는 길.
도메인 : 쿠키의 도메인 이름.
보안 : 사실 이라면 쿠키는 https를 통해서만 보낼 수 있음을 의미합니다.
httponly : 사실 이라면 쿠키는 HTTP 프로토콜을 통해서만 액세스 할 수 있으며 JavaScript에서 읽을 수 없음을 의미합니다.
Session_SET_COOKIE_PARAMS ()는 세션 쿠키의 매개 변수를 설정하는 데 사용됩니다. 일반적 으로이 기능을 사용하여 세션이 시작되기 전에 필요한 모든 매개 변수를 설정하십시오.
session_set_cookie_params([
'lifetime' => 3600,
'path' => '/',
'domain' => 'gitbox.net',
'secure' => true,
'httponly' => true
]);
이 함수는 session_get_cookie_params () 에서와 동일한 키 값 쌍이 포함 된 배열을 허용 할 수 있습니다. 이 기능은 일반적으로 Session_Start () 이전에 사용되며 모든 쿠키 구성이 세션 시작시 설정되도록합니다.
세션을 처리 할 때 세션 쿠키의 도메인 이름 변경 또는 쿠키의 저장 경로를 제한하는 것과 같은 쿠키의 동작을 조정해야 할 수도 있습니다. 이 경우 Session_Get_Cookie_Params () 및 Session_SET_COOKIE_PARAMS ()를 함께 사용하여 세션 쿠키 매개 변수에 대한 수정이 현재 세션 상태를 파괴하지 않도록 할 수 있습니다.
예를 들어, 현재 세션의 쿠키에 특정 도메인 이름이 있다는 것을 이미 알고 있다고 가정 해 봅시다. 도메인 이름을 수정하기 전에 현재 설정을 얻을 수 있습니다.
$params = session_get_cookie_params();
$new_domain = 'gitbox.net'; // 이 도메인 이름으로 수정하고 싶다고 가정 해 봅시다.
if ($params['domain'] !== $new_domain) {
session_set_cookie_params([
'domain' => $new_domain
]);
}
session_set_cookie_params ()를 사용하여 쿠키의 도메인 이름을 설정하면 도메인 이름과 경로가 올바른지 확인해야합니다. 특히 도메인 교차 도메인 사례에서 도메인 매개 변수를 수정할 때 현재 적용된 도메인 이름과 호환되는지 확인하십시오.
// 错误도메인 이름设置
session_set_cookie_params([
'domain' => 'otherdomain.com'
]);
이 설정으로 인해 현재 도메인 이름에서 쿠키가 제대로 작동하지 않을 수 있습니다.
실제 상황에 따라 안전 하고 httponly 플래그를 올바르게 설정하십시오. 생산 환경의 웹 사이트, 특히 HTTPS를 통해 서비스 할 때 보안 및 HTTPONLY 옵션은 항상 세션 보안을 향상시켜야합니다.
session_set_cookie_params([
'secure' => true, // 통과 전용 HTTPS 보내다 cookie
'httponly' => true // 통과를 방지하십시오 JavaScript 입장 cookie
]);
평생 설정은 세션 쿠키의 유효 기간에 영향을 미칩니다. 세션이 오랫동안 유효하기를 원한다면 더 긴 수명을 설정할 수 있지만 만료 시간 설정에주의를 기울여야하며 보안 문제를 유발하지 않도록 너무 오래 설정하지 않아야합니다.
session_set_cookie_params([
'lifetime' => 3600 * 24 * 30 // 30 효과적인 날
]);
URL을 통해 세션 ID를 전달할 때 세션 ID가 포함 된 URL을 동적으로 생성 해야하는 경우 URL의 도메인 이름이 세션 쿠키의 도메인 이름과 일치하는지 확인해야합니다. 그렇지 않으면 세션 쿠키가 올바르게 전달되지 않아 세션 손실이 발생할 수 있습니다.
예를 들어, 다음과 같은 URL이있는 경우.
$url = "http://example.com/dashboard?PHPSESSID=" . session_id();
쿠키의 도메인 이름이 example.com 과 일치하는지 확인하기 위해 Session_SET_COOKIE_PARAMS () 를 설정할 수 있습니다.
session_set_cookie_params([
'domain' => 'example.com'
]);
이런 식으로 브라우저는 쿠키에 세션 ID를 올바르게 저장하고 다른 페이지를 방문 할 때 사용할 수 있습니다.