session_save_path()
session_start()
session_set_cookie_params();
PHP파일을 통해 php.ini설정을 수정하려면 ini_set()함수를 사용하면 됩니다.
php.ini 설정에서 session.use_strict_mode = 1로 설정되어 있다면 Session ID가 영구적으로 사용될 수 있습니다. 이렇게 될 경우 공격자가 세션 ID 훔쳐와 사용할 수 있기 때문에 해당설정은 0으로 꺼두는 것이 좋습니다.
session.use_only_cookies는 쿠키로면 session ID 를 사용하도록 하는 것으로 URL의 GET 값으로 PHPSESSID가 전달되는 것을 지원하지 않게 합니다. 해당 설정은 1로 켜주세요.
session.cookie_httpOnly는 Javascript Injection을 통해 클라이언트의 Session ID가 노출 될 수 있으므로 1로 켜서 막아주어야 합니다.
session.cookie_secure설정은 https를 사용할 때 사용하는 것이 좋습니다.
세션에는 쿠키와 마찮가지로 유효기간이 있습니다. 이 유효기간이 만료되면 GC에 의해서 삭제되게 됩니다.
이러한 설정은 php.ini에서 session.gc로 시작되는 설정들입니다.
session.gc_maxlifetime이 바로 유효기간으로 설정은 초단위 정수로 전달됩니다.
session_gc는 유효기간이 만료된 세션들을 정리해주는 함수이지만 session_gc의 수행은 완벽하지 않기 때문에 해당 작업을 온전히 믿어서는 안됩니다.
ini_set('session.gc_maxlifetime',10);
session_set_cookie_params(10);
session_start();
session_gc();
일반적으로는 session_gc를 주기적으로 수행하도록해 세션 파일들을 정리해줍니다.
session_save_path(dirname(__DIR__) . '/sessions');
session_start();
$_SESSION['timestamp'] = $_SERVER['REQUEST_TIME'];
$time = strtotime('+10 seconds');
$diff = $time - $_SESSION['timestamp'];
$sessionTimeOut = 10;
if ($diff >= $sessionTimeOut) {
/*
~세션을 파괴 후 기타 작업 진행 (php 가이드라인에서 권장하지 않음)
*/
/* 세션 재설정 방법 */
session_regenerate_id();
$_SESSION['timestamp'] = time();
exit;
}