PHP에서 세션을 저장하는 원리나 어디에 저장하는 지 등에 대해 한번도 생각해 본적이 없었는데..
PHP가 세션값을 서버의 특정 경로에 저장했다가 세션을 파기한다고 한다
- 일단, Session을 생성시키기 위해 로그인 과정을 진행한다
** 대락 다음과 같은 코드가 있어야 session 생성 가능
<?
session_start();$_SESSION['user_id'] = $user_id;$_SESSION['user_name'] = $members[$user_id]['name'];?>
정상적으로 로그인에 성공하면 $user_id랑 $members를 $_SESSION의 변수로 등록하여 세션을 구현한다.
일단, session_start() 함수가 호출이 되면 client 측의 브라우저에는 PHPSESSID로 시작하는 세션 토큰이 생긴다.
그러면 이런 정보를 서버는 어떻게 저장하고 처리할까?
session_start()가 호출되면 서버는 PHPSESSID를 생성하여 설정된 경로에 "sess_PHPSESSIONID"라는 파일을 생성한다.
이 때, 파일 안에는 아무값도 저장하지 않으며, 해당페이지에서 세션값이 필요 없는 서비스만 이용이 가능하다.
이 때, 정상적으로 로그인이 이루어지면 파일안에 $user_id와 $members 정보를 저장한다.
! 참고 !
session값을 저장하는 경로는 php.ini 설정파일에서 수정이 가능하다.
나의 경우, C:\APM_Setup\temp\session으로 설정하여 해당 파일 내에 저장되는 것!!
** session.save_path를 설정하는 여러가지 방법에 대해 설명하고 있는데
session.save_path="N;/path" 로 설정하면 설정한 경로내에 session 파일을 몇개까지 저장할 것인지 설정이 가능하다. (N은 정수)
** default로 session.save_path="/" 로 설정되어있음.
이제, 로그아웃 시 세션을 삭제하는 과정을 살펴본다.
세션을 삭제하려면 session_destroy()가 호출되어야 한다.
** 대략 다음과 같은 코드가 있어야 세션 삭제 가능
<?phpsession_start();session_destroy();?>
정상적으로 session_destroy()가 호출되면 해당 파일안에 저장된 정보를 삭제하고 다시 빈파일이 된다.
'Hacking > Web' 카테고리의 다른 글
[기타] WAS 디폴트 페이지 (0) | 2018.03.19 |
---|---|
[취약점] File Inclusion 취약점 ① - LFI(Local File Inclusion) (0) | 2018.03.19 |
[기타] apmsetup7 설치 (0) | 2018.03.16 |
[기타] 자바스크립트를 통한 Xecureweb(제큐어웹) 적용 시 파라미터 확인 및 변조 (0) | 2018.03.12 |
[기타] 정규표현식 (0) | 2018.02.22 |