그누보드 4.35.00 정보
그누보드 4.35.00첨부파일
본문
4.35.00 (2012.06.12)
: SESSION Data 가 노출되지 않도록 DB SESSION 사용 (HSEngine 님께서 알려 주셨습니다.)
: $_SERVER['PHP_SELF'] 변수를 사용한 XSS 취약점 수정
lib/dbsession.lib.php 파일 추가
config.php 파일에 추가하세요.
$g4['session_table'] = $g4['table_prefix'] . "session"; // 세션 테이블
common.php 파일에서
SESSION 관련 코드를 모두 삭제하신 후 아래 코드로 대체하세요.
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$_SERVER['PHP_SELF'] = htmlentities($_SERVER['PHP_SELF']);
//-------------------------------------------
// SESSION 설정
//-------------------------------------------
include_once("$g4[path]/lib/dbsession.lib.php");
$session = new g4_dbsession();
session_set_save_handler(array($session, 'open'),
array($session, 'close'),
array($session, 'read'),
array($session, 'write'),
array($session, 'destroy'),
array($session, 'gc'));
ini_set("session.use_trans_sid", 0); // PHPSESSID를 자동으로 넘기지 않음
ini_set("url_rewriter.tags",""); // 링크에 PHPSESSID가 따라다니는것을 무력화함 (해뜰녘님께서 알려주셨습니다.)
if (isset($SESSION_CACHE_LIMITER))
@session_cache_limiter($SESSION_CACHE_LIMITER);
else
@session_cache_limiter("no-cache, must-revalidate");
@session_start();
//-------------------------------------------
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
: SESSION Data 가 노출되지 않도록 DB SESSION 사용 (HSEngine 님께서 알려 주셨습니다.)
: $_SERVER['PHP_SELF'] 변수를 사용한 XSS 취약점 수정
lib/dbsession.lib.php 파일 추가
config.php 파일에 추가하세요.
$g4['session_table'] = $g4['table_prefix'] . "session"; // 세션 테이블
common.php 파일에서
SESSION 관련 코드를 모두 삭제하신 후 아래 코드로 대체하세요.
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$_SERVER['PHP_SELF'] = htmlentities($_SERVER['PHP_SELF']);
//-------------------------------------------
// SESSION 설정
//-------------------------------------------
include_once("$g4[path]/lib/dbsession.lib.php");
$session = new g4_dbsession();
session_set_save_handler(array($session, 'open'),
array($session, 'close'),
array($session, 'read'),
array($session, 'write'),
array($session, 'destroy'),
array($session, 'gc'));
ini_set("session.use_trans_sid", 0); // PHPSESSID를 자동으로 넘기지 않음
ini_set("url_rewriter.tags",""); // 링크에 PHPSESSID가 따라다니는것을 무력화함 (해뜰녘님께서 알려주셨습니다.)
if (isset($SESSION_CACHE_LIMITER))
@session_cache_limiter($SESSION_CACHE_LIMITER);
else
@session_cache_limiter("no-cache, must-revalidate");
@session_start();
//-------------------------------------------
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
댓글 전체
위 코드를 적용하시면 data/session 디렉토리가 삭제되며 g4_session 테이블이 생성됩니다.
일등
관리자님 안녕하세요.
항상 많은 도움을 받고 있서 감사드립니다.
현재 업데이트를 진행하다, 짧게나마 추가 보안점을 찾아 아래와 같이 글을 남기게 되었습니다.
검토후 업데이트 부탁드립니다.
그럼 수고하세요^^ 홧팅!!!
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=30373&page=0&posting=ok&sca=&sfl=&stx=&sst=&sod=&spt=0&page=0
항상 많은 도움을 받고 있서 감사드립니다.
현재 업데이트를 진행하다, 짧게나마 추가 보안점을 찾아 아래와 같이 글을 남기게 되었습니다.
검토후 업데이트 부탁드립니다.
그럼 수고하세요^^ 홧팅!!!
http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=30373&page=0&posting=ok&sca=&sfl=&stx=&sst=&sod=&spt=0&page=0
감사합니다. ^^
고생하셨습니다^^ session 부분을 이제 db로 관리하겠군요~ 후아..좋아요^^
감사합니다.
감사합니다.
감사합니다.
환경설정 > 세션삭제는 더이상 쓸모가 없는거죠?
환경설정 > 세션삭제는 더이상 쓸모가 없는거죠?
그렇네요.
메뉴에서 삭제해 놓았습니다.
이것과 관련된 HISTORY는 남기지 않겠습니다.
감사합니다.
메뉴에서 삭제해 놓았습니다.
이것과 관련된 HISTORY는 남기지 않겠습니다.
감사합니다.
스팸프리였나 자동글방지시스템 뚫린것 보안한 버전인가요?
좋습니다
감사합니다.
해당 팁은 php.net 에서 많이 소개하고 있습니다.
http://kr.php.net/manual/en/function.session-set-save-handler.php
배추님 코드도 일전에 한번 본적이 있어 참고 하였습니다. ^^
http://kr.php.net/manual/en/function.session-set-save-handler.php
배추님 코드도 일전에 한번 본적이 있어 참고 하였습니다. ^^
감사합니다. 버젼이 계속 바뀌네요.. 다 바꾸려면...
2차도메인을 같이 사용할경우 SESSION 공유가 안되는지 로그인 공유가 안됩니다.
저의 경우 www.domain.com 과 game.domain.com 양쪽 계정에 그누보드파일을
설치하고 db와 data 폴더만 공유하여 사용하고 있는데
www.domain.com 으로 로그인하고 game.domain.com 으로 접속을하면 로그인이
안되네요.
양쪽계정 해당 파일에 이번 수정사항을 적용한 상태입니다.
혹시 해결방법을 아시는분 계시면 도움을 부탁드립니다.
저의 경우 www.domain.com 과 game.domain.com 양쪽 계정에 그누보드파일을
설치하고 db와 data 폴더만 공유하여 사용하고 있는데
www.domain.com 으로 로그인하고 game.domain.com 으로 접속을하면 로그인이
안되네요.
양쪽계정 해당 파일에 이번 수정사항을 적용한 상태입니다.
혹시 해결방법을 아시는분 계시면 도움을 부탁드립니다.
세션에 쿠키 도메인 적용이 되지 않아 2차 도메인의 로그인 유지가 되지 않았습니다.
오늘중으로 패치하여 올리겠습니다.
당장 적용하시려면
common.php 파일에 두줄 추가하시면 됩니다.
session_set_cookie_params(0, "/");
ini_set("session.cookie_domain", $g4['cookie_domain']);
@session_start();
오늘중으로 패치하여 올리겠습니다.
당장 적용하시려면
common.php 파일에 두줄 추가하시면 됩니다.
session_set_cookie_params(0, "/");
ini_set("session.cookie_domain", $g4['cookie_domain']);
@session_start();
답변 달아주시니 마음이 놓이네요.
극초보라 어떻게 해야하나 고민했거든요.
감사드립니다.
극초보라 어떻게 해야하나 고민했거든요.
감사드립니다.
로그인 세션 유지 시간이 너무 짧아진거 같아서(24분) 이전 버전의 설정(180분)으로
아래와 같이 수정해 보았는데 별 문제 없을까요?
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$_SERVER['PHP_SELF'] = htmlentities($_SERVER['PHP_SELF']);
//-------------------------------------------
// SESSION 설정
//-------------------------------------------
include_once("$g4[path]/lib/dbsession.lib.php");
$session = new g4_dbsession();
session_set_save_handler(array($session, 'open'),
array($session, 'close'),
array($session, 'read'),
array($session, 'write'),
array($session, 'destroy'),
array($session, 'gc'));
ini_set("session.use_trans_sid", 0); // PHPSESSID를 자동으로 넘기지 않음
ini_set("url_rewriter.tags",""); // 링크에 PHPSESSID가 따라다니는것을 무력화함 (해뜰녘님께서 알려주셨습니다.)
if (isset($SESSION_CACHE_LIMITER))
@session_cache_limiter($SESSION_CACHE_LIMITER);
else
@session_cache_limiter("no-cache, must-revalidate");
ini_set("session.cache_expire", 180); // 세션 캐쉬 보관시간 (분)
ini_set("session.gc_maxlifetime", 10800); // session data의 garbage collection 존재 기간을 지정 (초) // 10800/60 = 180분
ini_set("session.gc_probability", 1); // session.gc_probability는 session.gc_divisor와 연계하여 gc(쓰레기 수거) 루틴의 >시작 확률을 관리합니다. 기본값은 1입니다. 자세한 내용은 session.gc_divisor를 참고하십시오.
ini_set("session.gc_divisor", 100); // session.gc_divisor는 session.gc_probability와 결합하여 각 세션 초기화 시에 gc(쓰>레기 수거) 프로세스를 시작할 확률을 정의합니다. 확률은 gc_probability/gc_divisor를 사용하여 계산합니다. 즉, 1/100은 각 >요청시에 GC 프로세스를 시작할 확률이 1%입니다. session.gc_divisor의 기본값은 100입니다.
session_set_cookie_params(0, "/");
ini_set("session.cookie_domain", $g4['cookie_domain']);
@session_start();
//-------------------------------------------
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
아래와 같이 수정해 보았는데 별 문제 없을까요?
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$_SERVER['PHP_SELF'] = htmlentities($_SERVER['PHP_SELF']);
//-------------------------------------------
// SESSION 설정
//-------------------------------------------
include_once("$g4[path]/lib/dbsession.lib.php");
$session = new g4_dbsession();
session_set_save_handler(array($session, 'open'),
array($session, 'close'),
array($session, 'read'),
array($session, 'write'),
array($session, 'destroy'),
array($session, 'gc'));
ini_set("session.use_trans_sid", 0); // PHPSESSID를 자동으로 넘기지 않음
ini_set("url_rewriter.tags",""); // 링크에 PHPSESSID가 따라다니는것을 무력화함 (해뜰녘님께서 알려주셨습니다.)
if (isset($SESSION_CACHE_LIMITER))
@session_cache_limiter($SESSION_CACHE_LIMITER);
else
@session_cache_limiter("no-cache, must-revalidate");
ini_set("session.cache_expire", 180); // 세션 캐쉬 보관시간 (분)
ini_set("session.gc_maxlifetime", 10800); // session data의 garbage collection 존재 기간을 지정 (초) // 10800/60 = 180분
ini_set("session.gc_probability", 1); // session.gc_probability는 session.gc_divisor와 연계하여 gc(쓰레기 수거) 루틴의 >시작 확률을 관리합니다. 기본값은 1입니다. 자세한 내용은 session.gc_divisor를 참고하십시오.
ini_set("session.gc_divisor", 100); // session.gc_divisor는 session.gc_probability와 결합하여 각 세션 초기화 시에 gc(쓰>레기 수거) 프로세스를 시작할 확률을 정의합니다. 확률은 gc_probability/gc_divisor를 사용하여 계산합니다. 즉, 1/100은 각 >요청시에 GC 프로세스를 시작할 확률이 1%입니다. session.gc_divisor의 기본값은 100입니다.
session_set_cookie_params(0, "/");
ini_set("session.cookie_domain", $g4['cookie_domain']);
@session_start();
//-------------------------------------------
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
방문객이 많다면 문제가 될수 있으며,
방문객수가 적다면 크게 상관이 없을것 같습니다.
방문객수가 적다면 크게 상관이 없을것 같습니다.
감사합니다
감사합니다.
쇼핑몰은 적용되어있는지요?
쇼핑몰은 적용되어있는지요?
영카트는 간격을 두고 패치가 됩니다.
아직 적용되지 않았습니다.
아직 적용되지 않았습니다.
ㄱㅅㄱㅅ!!
그누보드5는 언제나와요!?
그누보드5는 언제나와요!?
배추님 사이트 죽었어요. 8282
우와~~~ 드디어 이것이 실현 되는군요.
적용 해 보니 사이트가 쫌 빨라진 감이 있네요.
세션이 디비에 저장이 되서 게시판 같은 거... 개조할 때 좋을 듯 싶습니다.
관리자님 감솨!!!
적용 해 보니 사이트가 쫌 빨라진 감이 있네요.
세션이 디비에 저장이 되서 게시판 같은 거... 개조할 때 좋을 듯 싶습니다.
관리자님 감솨!!!
디비세션에 대해 한수 배웠습니다.
말로만 들었던 디비세션 코드를 보니 명확히 이해가 가는군요.
시스템 메모리가 여유가 있고, 접속자 수가 그리 많지 않다면 heap table로 구성해서 사용하는 것도 나쁘지 않을 듯 싶습니다.
말로만 들었던 디비세션 코드를 보니 명확히 이해가 가는군요.
시스템 메모리가 여유가 있고, 접속자 수가 그리 많지 않다면 heap table로 구성해서 사용하는 것도 나쁘지 않을 듯 싶습니다.
감사합니다.
감사합니다~^ㅁ^
감사합니다.
감사합니다. 항상 수고가 많으시네요.
감사합니다.