상세 컨텐츠

본문 제목

PHPSESSID 가 주소창에 표시되는 것 방지하기, PHP코딩팁 / ini_set()

IT공부방/PHP

by 동해둘리 2019. 9. 21. 09:30

본문

반응형

PHP로 웹사이트를 개발할 때, 간혹 주소창에 표시되는 URL 뒤에 PHPSESSID 라는 값이 따라다니면서 표시되는 경우가 있습니다.

 

http://www.OOO.com/main.php?PHPSESSID=839878d87a8097090d988   

 

PHPSESSID , phpsessid

 

 

 

그렇다면 PHPSESSID가 뭘까요?

 

PHPSESSID 는 사용자가 웹서버에 접속할 때, 접속하는 세션마다 SESSION ID 가 발급되게 되는데 그 값을 저장하고 있는 변수가 PHPSESSID 입니다. 만약, 페이지 전환시에 PHPSESSID 가 일치하면 동일한 세션에 의한 접속이라고 판단하게되며, 만약 PHPSESSID 가 없으면 웹서버는 새로운 SESSION ID 를 발급하게 됩니다.

 

 

PHPSESSID 는 쿠키에 저장되거나 GET방식으로 계속 넘기는 방식으로 전달되게 됩니다. 하지만, SESSION ID가 URL 상에서 노출이 되게되면, 아무래도 보안상의 문제가 발생할 수 있기 때문에 이를 막아주는 것이 좋습니다

 

 

@ini_set("session.use_trans_sid", 0);

 

 

위에서 보듯이 ini_set 함수를 이용하여 이를 방지할 수가 있습니다. ini_set 함수는 php.ini 파일에 설정된 항목을 바꿀 수 있는 함수입니다. 다만, 서버세팅에 따라 권한이 부여되지 않을 수가 있기 때문에 오류가 발생할 수 있습니다.

 

그래서 ini_set 함수 앞에 @ 를 붙인것입니다. 함수앞에 @ 가 붙어있으면, 해당 함수 실행중에 오류가 발생해도 에러메시지를 표시하지 않게 됩니다.

 

@ini_set("session.use_trans_sid", 0);
@ini_set("url_rewriter.tags","");

 

 

session.use_trans_sid 값을 0으로 세팅하는것과 동시에 url_rewriter.tags 값도 세팅해 주는것이 좋습니다. url_rewriter.tags 는 PHP가 해석되어 html을 출력할 때, 각 태그의 속성에 세션아이디를 넣을 수 있게 해주는 옵션인데요 이 또한 보안상 위험할 수 있기대문에 막아주는 것이 좋습니다.

 

호스팅업체에 따라, php버전에 따라 세팅이 달라질 수 있기 때문에 각 상황에 맞게 사용하시기 바랍니다.

 

반응형

관련글 더보기

댓글 영역