세션 처리 설치 런타임 구성
이러한 함수의 동작은 php.ini의 설정에 영향을 받습니다.
Session configuration options
Name | Default | Changeable | Changelog |
---|---|---|---|
session.save_path | "" | PHP_INI_ALL | |
session.name | "PHPSESSID" | PHP_INI_ALL | |
session.save_handler | "files" | PHP_INI_ALL | |
session.auto_start | "0" | PHP_INI_PERDIR | |
session.gc_probability | "1" | PHP_INI_ALL | |
session.gc_divisor | "100" | PHP_INI_ALL | |
session.gc_maxlifetime | "1440" | PHP_INI_ALL | |
session.serialize_handler | "php" | PHP_INI_ALL | |
session.cookie_lifetime | "0" | PHP_INI_ALL | |
session.cookie_path | "/" | PHP_INI_ALL | |
session.cookie_domain | "" | PHP_INI_ALL | |
session.cookie_secure | "0" | PHP_INI_ALL | PHP 7.2.0 이전에는 기본값이 "" 였습니다. |
session.cookie_httponly | "0" | PHP_INI_ALL | PHP 7.2.0 이전에는 기본값이 "" 였습니다. |
session.cookie_samesite | "" | PHP_INI_ALL | PHP 7.3.0부터 사용 가능합니다. |
session.use_strict_mode | "0" | PHP_INI_ALL | |
session.use_cookies | "1" | PHP_INI_ALL | |
session.use_only_cookies | "1" | PHP_INI_ALL | |
session.referer_check | "" | PHP_INI_ALL | |
session.cache_limiter | "nocache" | PHP_INI_ALL | |
session.cache_expire | "180" | PHP_INI_ALL | |
session.use_trans_sid | "0" | PHP_INI_ALL | |
session.trans_sid_tags | "a=href,area=href,frame=src,form=" | PHP_INI_ALL | PHP 7.1.0부터 사용 가능합니다. |
session.trans_sid_hosts | $_SERVER['HTTP_HOST'] |
PHP_INI_ALL | PHP 7.1.0부터 사용 가능합니다. |
session.sid_length | "32" | PHP_INI_ALL | PHP 7.1.0부터 사용 가능합니다. |
session.sid_bits_per_character | "4" | PHP_INI_ALL | PHP 7.1.0부터 사용 가능합니다. |
session.upload_progress.enabled | "1" | PHP_INI_PERDIR | |
session.upload_progress.cleanup | "1" | PHP_INI_PERDIR | |
session.upload_progress.prefix | "upload_progress_" | PHP_INI_PERDIR | |
session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | PHP_INI_PERDIR | |
session.upload_progress.freq | "1%" | PHP_INI_PERDIR | |
session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | |
session.lazy_write | "1" | PHP_INI_ALL | |
session.hash_function | "0" | PHP_INI_ALL | PHP 7.1.0부터 제거되었습니다. |
session.hash_bits_per_character | "4" | PHP_INI_ALL | PHP 7.1.0부터 제거되었습니다. |
session.entropy_file | "" | PHP_INI_ALL | PHP 7.1.0부터 제거되었습니다. |
session.entropy_length | "0" | PHP_INI_ALL | PHP 7.1.0부터 제거되었습니다. |
PHP_INI_* 모드에 대한 자세한 내용과 정의는 구성 설정을 설정할 수 있는 위치를 참조하세요. 세션 관리 시스템은 php.ini 파일에 넣을 수 있는 여러 구성 옵션을 지원합니다. 간략한 개요를 알려드리겠습니다.
session.save_handler
stringsession.save_handler
는 세션과 관련된 데이터를 저장하고 검색하는 데 사용되는 핸들러의 이름을 정의합니다. 기본값은files
입니다. 개별 확장은 고유한save_handler
를 등록할 수 있습니다. 등록된 핸들러는 phpinfo()를 참조하여 설치별로 얻을 수 있습니다. session_set_save_handler()도 참조하십시오.session.save_path
stringsession.save_path
는 저장 핸들러에 전달되는 인수를 정의합니다. 기본 파일 처리기를 선택하는 경우 파일이 생성되는 경로입니다. session_save_path()도 참조하십시오.이 지시문에는 세션 파일이 분산될 디렉터리 수준의 수를 결정하는 선택적
N
인수가 있습니다. 예를 들어,'5;/tmp'
로 설정하면 세션 파일과/tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If
와 같은 위치가 생성될 수 있습니다.N
을 사용하려면 사용하기 전에 이러한 모든 디렉토리를 생성해야 합니다. 이를 수행하기 위한 작은 쉘 스크립트가 ext/session에 존재합니다. 이를 mod_files.sh라고 하며 Windows 버전에서는 mod_files.bat라고 합니다. 또한N
이 사용되고 0보다 크면 자동 가비지 수집이 수행되지 않습니다. 자세한 내용은 php.ini 사본을 참조하십시오. 또한N
을 사용하는 경우 구분 기호(;
)가 php.ini의 주석에도 사용되기 때문에session.save_path
를 "따옴표"로 묶어야 합니다.파일 저장 모듈은 기본적으로 모드 600을 사용하여 파일을 생성합니다. 이 기본값은 선택적
MODE
인수로 변경할 수 있습니다.N;MODE;/path
여기서MODE
는 모드의 8진수 표현입니다.MODE
설정은 프로세스 umask에 영향을 미치지 않습니다.경고 /tmp(기본값)와 같이 누구나 읽을 수 있는 디렉토리로 설정하면 서버의 다른 사용자가 해당 디렉토리의 파일 목록을 가져와 세션을 가로챌 수 있습니다.
주의 위에서 설명한 대로 선택적 디렉터리 수준 인수N
을 사용할 때 필요한 디렉터리 수가 많기 때문에 1 또는 2보다 큰 값을 사용하는 것은 대부분의 사이트에 부적절합니다. 예를 들어 값이 3이면(2 ** session.sid_bits_per_character) ** 3
개의 디렉토리가 파일 시스템에 존재하므로 많은 공간과 inode가 낭비될 수 있습니다.사이트가 이를 요구할 만큼 충분히 크다고 절대적으로 확신하는 경우에만 2보다 큰
N
을 사용하십시오.session.name
stringsession.name
은 쿠키 이름으로 사용되는 세션의 이름을 지정합니다. 영숫자 문자만 포함해야 합니다. 기본값은PHPSESSID
입니다. session_name()도 참조하십시오.session.auto_start
boolsession.auto_start
는 요청 시작 시 세션 모듈이 세션을 자동으로 시작할지 여부를 지정합니다. 기본값은0
(비활성화)입니다.session.serialize_handler
stringsession.serialize_handler
는 데이터 직렬화/역직렬화에 사용되는 핸들러의 이름을 정의합니다. PHP 직렬화 형식(이름php_serialize
), PHP 내부 형식(이름php
및php_binary
) 및 WDDX(이름wddx
)가 지원됩니다. WDDX는 PHP가 WDDX support으로 컴파일된 경우에만 사용할 수 있습니다.php_serialize
는 내부적으로 일반 직렬화/비직렬화 함수를 사용하며php
및php_binary
에 있는 제한 사항이 없습니다. 이전 직렬화 처리기는 숫자 인덱스를 저장할 수 없으며 문자열 인덱스에는 $_SESSION에 특수 문자(|
및!
)가 포함됩니다. 스크립트 종료 시 숫자 인덱스 또는 특수 문자 오류를 방지하려면php_serialize
를 사용하십시오. 기본값은php
입니다.session.gc_probability
intsession.gc_probability
는session.gc_divisor
와 함께 gc(가비지 수집) 루틴이 시작될 확률을 관리하는 데 사용됩니다. 기본값은1
입니다. 자세한 내용은 session.gc_divisor를 참조하세요.session.gc_divisor
intsession.gc_divisor
와session.gc_probability
결합은 모든 세션 초기화에서 gc(가비지 수집) 프로세스가 시작될 확률을 정의합니다. 확률은 gc_probability/gc_divisor를 사용하여 계산됩니다. 1/100은 각 요청에서 GC 프로세스가 시작될 확률이 1%임을 의미합니다.session.gc_divisor
의 기본값은100
입니다.session.gc_maxlifetime
intsession.gc_maxlifetime
은 데이터가 'garbage'로 표시되고 잠재적으로 정리되는 시간(초)을 지정합니다. 세션 시작 중에 가비지 수집이 발생할 수 있습니다(session.gc_probability 및 session.gc_divisor에 따라 다름).참고: 다른 스크립트의
session.gc_maxlifetime
값이 다르지만 세션 데이터를 저장하는 동일한 위치를 공유하는 경우 최소 값을 가진 스크립트가 데이터를 정리합니다. 이 경우 session.save_path와 함께 이 지시문을 사용하십시오.session.referer_check
stringsession.referer_check
에는 각 HTTP 참조자를 확인하려는 하위 문자열이 포함되어 있습니다. 참조자가 클라이언트에 의해 전송되었고 하위 문자열을 찾을 수 없는 경우 포함된 세션 ID가 유효하지 않은 것으로 표시됩니다. 기본값은 빈 문자열입니다.session.entropy_file
stringsession.entropy_file
은 세션 ID 생성 과정에서 추가적인 엔트로피 소스로 사용될 외부 리소스(파일)의 경로를 제공합니다. 예는 많은 Unix 시스템에서 사용할 수 있는/dev/random
또는/dev/urandom
입니다. 이 기능은 Windows에서 지원됩니다.session.entropy_length
를 0이 아닌 값으로 설정하면 PHP가 Windows Random API를 엔트로피 소스로 사용합니다.참고: PHP 7.1.0에서 제거되었습니다.
session.entropy_file
은 사용 가능한 경우/dev/urandom
또는/dev/arandom
으로 기본 설정됩니다.session.entropy_length
intsession.entropy_length
는 위에 지정된 파일에서 읽을 바이트 수를 지정합니다. 기본값은32
입니다. PHP 7.1.0에서 제거되었습니다.session.use_strict_mode
boolsession.use_strict_mode
는 모듈이 엄격한 세션 ID 모드를 사용할지 여부를 지정합니다. 이 모드가 활성화되면 모듈은 초기화되지 않은 세션 ID를 허용하지 않습니다. 브라우저에서 초기화되지 않은 세션 ID가 전송되면 새 세션 ID가 브라우저로 전송됩니다. 애플리케이션은 엄격 모드의 세션 채택을 통해 세션 고정으로부터 보호됩니다. 기본값은0
(비활성화)입니다.참고: 일반 세션 보안을 위해
session.use_strict_mode
를 활성화해야 합니다. 모든 사이트에서 이 기능을 활성화하는 것이 좋습니다. 자세한 내용은 session_create_id() 예제 코드를 참조하세요.경고 session_set_save_handler()를 통해 등록된 사용자 정의 세션 핸들러가 SessionUpdateTimestampHandlerInterface::validateId()를 구현하지 않고 각각
validate_sid
콜백을 제공하지 않으면 이 지시어의 값에 관계없이 엄격한 세션 ID 모드가 효과적으로 비활성화됩니다. 특히 SessionHandler는 SessionHandler::validateId()를 구현하지 않습니다.session.use_cookies
는 모듈이 쿠키를 사용하여 클라이언트 측에서 세션 ID를 저장할지 여부를 지정합니다. 기본값은1
(활성화됨)입니다.session.use_only_cookies
는 모듈이 클라이언트 측에서 세션 ID를 저장하기 위해 쿠키만 사용할지 여부를 지정합니다. 이 설정을 활성화하면 URL의 세션 ID 전달과 관련된 공격을 방지할 수 있습니다. 기본값은1
(활성화됨)입니다.session.cookie_lifetime
은 브라우저로 전송되는 쿠키의 수명을 초 단위로 지정합니다. 값 0은 "브라우저가 닫힐 때까지"를 의미합니다. 기본값은0
입니다. session_get_cookie_params() 및 session_set_cookie_params()도 참조하십시오.참고: 만료 타임스탬프는 서버 시간을 기준으로 설정되며 클라이언트 브라우저의 시간과 반드시 같을 필요는 없습니다.
session.cookie_path
는 세션 쿠키에 설정할 경로를 지정합니다. 기본값은/
입니다. session_get_cookie_params() 및 session_set_cookie_params()도 참조하십시오.session.cookie_domain
은 세션 쿠키에 설정할 도메인을 지정합니다. 기본값은 쿠키 사양에 따라 쿠키를 생성한 서버의 호스트 이름을 의미하는 none입니다. session_get_cookie_params() 및 session_set_cookie_params()도 참조하십시오.session.cookie_secure
는 쿠키가 보안 연결을 통해서만 전송되어야 하는지 여부를 지정합니다. 기본값은off
입니다. session_get_cookie_params() 및 session_set_cookie_params()도 참조하십시오.- 쿠키를 HTTP 프로토콜을 통해서만 액세스할 수 있는 것으로 표시합니다. 즉, JavaScript와 같은 스크립팅 언어에서는 쿠키에 액세스할 수 없습니다. 이 설정은 XSS 공격을 통한 신원 도용을 효과적으로 줄이는 데 도움이 될 수 있습니다(일부 브라우저에서 지원되지는 않음).
- 서버가 사이트 간 요청과 함께 쿠키를 보내면 안 된다고 주장할 수 있습니다. 이 어설션을 통해 사용자 에이전트는 출처 간 정보 누출 위험을 완화하고 사이트 간 요청 위조 공격에 대한 보호 기능을 제공할 수 있습니다. 모든 브라우저에서 지원되는 것은 아닙니다. 빈 값은 SameSite 쿠키 속성이 설정되지 않음을 의미합니다.
Lax
및Strict
는 쿠키가 POST 요청에 대해 도메인 간에 전송되지 않음을 의미합니다.Lax
는 도메인 간 GET 요청에 대해 쿠키를 보내지만Strict
는 그렇지 않습니다. session.cache_limiter
stringsession.cache_limiter
는 세션 페이지에 사용되는 캐시 제어 방법을 지정합니다.nocache
,private
,private_no_expire
또는public
값 중 하나일 수 있습니다. 기본값은nocache
입니다. 이러한 값의 의미에 대한 정보는 session_cache_limiter() 문서도 참조하십시오.session.cache_expire
intsession.cache_expire
는 캐시된 세션 페이지의 TTL(time-to-live)을 분 단위로 지정하며, 이는 nocache 제한기에 영향을 주지 않습니다. 기본값은180
입니다. session_cache_expire()도 참조하십시오.session.use_trans_sid
boolsession.use_trans_sid
투명 SID 지원이 활성화되었는지 여부. 기본값은0
(비활성화)입니다.참고: URL 기반 세션 관리는 쿠키 기반 세션 관리에 비해 추가적인 보안 위험이 있습니다. 예를 들어 사용자는 활성 세션 ID가 포함된 URL을 이메일로 친구에게 보내거나 사용자가 세션 ID가 포함된 URL을 책갈피에 저장하고 항상 동일한 세션 ID로 사이트에 액세스할 수 있습니다. PHP 7.1.0부터 전체 URL 경로, 예: https://php.net/은 트랜스 시드 기능으로 처리됩니다. 이전 PHP는 상대 URL 경로만 처리했습니다. 재작성 대상 호스트는 session.trans_sid_hosts에 의해 정의됩니다.
session.trans_sid_tags
는 투명 SID 지원이 활성화된 경우 세션 ID를 포함하도록 재작성되는 HTML 태그를 지정합니다. 기본값은a=href,area=href,frame=src,input=src,form=
이 특수 태그입니다.<input hidden="session_id" name="session_name">
이 폼 변수로 추가됩니다.참고: PHP 7.1.0 이전에는 url_rewriter.tags가 이 용도로 사용되었습니다. PHP 7.1.0부터
fieldset
은 더 이상 특수 태그로 간주되지 않습니다.session.trans_sid_hosts
stringsession.trans_sid_hosts
는 투명 SID 지원이 활성화된 경우 세션 ID를 포함하도록 다시 작성되는 호스트를 지정합니다. 기본값은$_SERVER['HTTP_HOST']
","로 여러 호스트를 지정할 수 있으며 호스트 사이에는 공백이 허용되지 않습니다. 예를 들어php.net,wiki.php.net,bugs.php.net
session.sid_length
intsession.sid_length
를 사용하면 세션 ID 문자열의 길이를 지정할 수 있습니다. 세션 ID 길이는 22에서 256 사이일 수 있습니다. 기본값은 32입니다. 호환성이 필요한 경우 32, 40 등을 지정할 수 있습니다. 세션 ID가 길수록 추측하기 어렵습니다. 32자 이상을 권장합니다.팁 호환성 참고:
session.hash_function
=0(MD5) 및session.hash_bits_per_character
=4,session.hash_function
=1(SHA1) 및session.hash_bits_per_character
=6 대신 32를 사용합니다.session.hash_function
=0(MD5) 및session.hash_bits_per_character
=5 대신 26을 사용합니다.session.hash_function
=0(MD5) 및session.hash_bits_per_character
=6 대신 22를 사용합니다. 세션 ID에 최소 128비트가 포함되도록 INI 값을 구성해야 합니다.session.sid_bits_per_character
에 적절한 값을 설정하는 것을 잊지 마십시오. 그렇지 않으면 세션 ID가 약해집니다.참고: 이 설정은 PHP 7.1.0에서 도입되었습니다.
session.sid_bits_per_character
intsession.sid_bits_per_character
를 사용하면 인코딩된 세션 ID 문자의 비트 수를 지정할 수 있습니다. 가능한 값은 '4'(0-9, a-f), '5'(0-9, a-v) 및 '6'(0-9, a-z, A-Z, "-", ",")입니다. 기본값은 4입니다. 비트가 많을수록 세션 ID가 더 강해집니다. 5는 대부분의 환경에서 권장되는 값입니다.참고: 이 설정은 PHP 7.1.0에서 도입되었습니다.
session.hash_function
mixedsession.hash_function
을 사용하면 세션 ID를 생성하는 데 사용되는 해시 알고리즘을 지정할 수 있습니다. '0'은 MD5(128비트)를 의미하고 '1'은 SHA-1(160비트)을 의미합니다.sha512
또는whirlpool
과 같은 hash extension(사용 가능한 경우)에서 제공하는 알고리즘을 지정할 수도 있습니다. 지원되는 알고리즘의 전체 목록은 hash_algos() 함수로 얻을 수 있습니다.참고: PHP 7.1.0에서 제거되었습니다.
session.hash_bits_per_character
intsession.hash_bits_per_character
를 사용하면 바이너리 해시 데이터를 읽을 수 있는 것으로 변환할 때 각 문자에 저장되는 비트 수를 정의할 수 있습니다. 가능한 값은 '4'(0-9, a-f), '5'(0-9, a-v) 및 '6'(0-9, a-z, A-Z, "-", ",")입니다.참고: PHP 7.1.0에서 제거되었습니다.
session.upload_progress.enabled
bool- 업로드 진행률 추적을 활성화하여 $_SESSION 변수를 채웁니다. 기본값은 1이며 활성화되어 있습니다.
session.upload_progress.cleanup
bool- 모든 POST 데이터를 읽는 즉시(즉, 업로드 완료) 진행 정보를 정리합니다. 기본값은 1이며 활성화되어 있습니다.
참고: 이 기능을 활성화된 상태로 유지하는 것이 좋습니다.
session.upload_progress.prefix
string- $_SESSION에서 업로드 진행 키에 사용되는 접두사입니다. 이 키는
$_POST[ini_get("session.upload_progress.name")]
값과 연결되어 고유한 인덱스를 제공합니다. 기본값은 "upload_progress_"입니다. session.upload_progress.name
string- 진행 정보를 저장하는 $_SESSION에서 사용할 키의 이름입니다. session.upload_progress.prefix도 참조하십시오.
$_POST[ini_get("session.upload_progress.name")]
가 통과되지 않았거나 사용할 수 없으면 업로드 진행 상황이 기록되지 않습니다. 기본값은 "PHP_SESSION_UPLOAD_PROGRESS"입니다. session.upload_progress.freq
mixed- 업로드 진행 정보를 업데이트해야 하는 빈도를 정의합니다. 이것은 바이트(즉, "100바이트마다 업데이트 진행 정보 업데이트") 또는 백분율(즉, "전체 파일 크기의 1%마다 업데이트 진행 정보 수신 후 업데이트 진행 정보")으로 정의할 수 있습니다. 기본값은 "1%"입니다.
session.upload_progress.min_freq
int- 업데이트 간의 최소 지연(초)입니다. 기본값은 "1"(1초)입니다.
session.lazy_write
boolsession.lazy_write
가 1로 설정되면 세션 데이터가 변경된 경우에만 다시 작성됨을 의미합니다. 기본값은 1이며 활성화되어 있습니다.
$_POST[ini_get("session.upload_progress.name")] 변수가 설정되지 않으면 업로드 진행률이 등록되지 않습니다. 이 기능에 대한 자세한 내용은 Session Upload Progress을 참조하십시오.