그누보드 4.35.00 > 그누4 다운로드

그누4 다운로드

여러분께서 보고 계시는 이 사이트는 그누보드4 최신버전으로 제작, 운영되고 있습니다.
SIR은 그누보드를 만들 뿐 프로그램의 설치, 운영방법, 설정문제에 관한 도움을 드리지는 않습니다.

그누보드 4.35.00 정보

그누보드 4.35.00

첨부파일

gnuboard4.utf8.tgz (2.1M) 500회 다운로드 2012-06-12 18:07:14
gnuboard4.euckr.tgz (2.1M) 249회 다운로드 2012-06-12 18:07:14

본문

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();
            //-------------------------------------------
            //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

댓글 전체

관리자님 안녕하세요.
항상 많은 도움을 받고 있서 감사드립니다.
현재 업데이트를 진행하다, 짧게나마 추가 보안점을 찾아 아래와 같이 글을 남기게 되었습니다.
검토후 업데이트 부탁드립니다.
그럼 수고하세요^^ 홧팅!!!

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
해당 팁은 php.net 에서 많이 소개하고 있습니다.
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 으로 접속을하면 로그인이
안되네요.
양쪽계정 해당 파일에 이번 수정사항을 적용한 상태입니다.
혹시 해결방법을 아시는분 계시면 도움을 부탁드립니다.
세션에 쿠키 도메인 적용이 되지 않아 2차 도메인의 로그인 유지가 되지 않았습니다.
오늘중으로 패치하여 올리겠습니다.

당장 적용하시려면

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();
//-------------------------------------------
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
우와~~~ 드디어 이것이 실현 되는군요.
적용 해 보니 사이트가 쫌 빨라진 감이 있네요.
세션이 디비에 저장이 되서 게시판 같은 거... 개조할 때 좋을 듯 싶습니다.
관리자님 감솨!!!
디비세션에 대해 한수 배웠습니다.
말로만 들었던 디비세션 코드를 보니 명확히 이해가 가는군요.
시스템 메모리가 여유가 있고, 접속자 수가 그리 많지 않다면 heap table로 구성해서 사용하는 것도 나쁘지 않을 듯 싶습니다.
전체 220 |RSS
그누4 다운로드 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT