From a7604e02c4f9036069d44814542445c9a2a04f09 Mon Sep 17 00:00:00 2001 From: chicpro Date: Wed, 19 Feb 2014 08:58:45 +0900 Subject: [PATCH 01/14] =?UTF-8?q?mysql=5Freal=5Fescape=5Fstring=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EC=A0=81=EC=9A=A9=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common.php | 54 +++++++++++++++++++++------------------------- lib/common.lib.php | 18 ++++++++++++++++ 2 files changed, 42 insertions(+), 30 deletions(-) diff --git a/common.php b/common.php index a1c2fa1a1..3f8a74a56 100644 --- a/common.php +++ b/common.php @@ -11,30 +11,6 @@ if (!defined('G5_SET_TIME_LIMIT')) define('G5_SET_TIME_LIMIT', 0); @set_time_limit(G5_SET_TIME_LIMIT); -//============================================================================== -// php.ini 의 magic_quotes_gpc 값이 Off 인 경우 addslashes() 적용 -// SQL Injection 등으로 부터 보호 -// http://kr.php.net/manual/en/function.get-magic-quotes-gpc.php#97783 -//------------------------------------------------------------------------------ -if (!get_magic_quotes_gpc()) { - $escape_function = 'addslashes($value)'; - $addslashes_deep = create_function('&$value, $fn', ' - if (is_string($value)) { - $value = ' . $escape_function . '; - } else if (is_array($value)) { - foreach ($value as &$v) $fn($v, $fn); - } - '); - - // Escape data - $addslashes_deep($_POST, $addslashes_deep); - $addslashes_deep($_GET, $addslashes_deep); - $addslashes_deep($_COOKIE, $addslashes_deep); - $addslashes_deep($_REQUEST, $addslashes_deep); -} -//============================================================================== - - //========================================================================================================================== // extract($_GET); 명령으로 인해 page.php?_POST[var1]=data1&_POST[var2]=data2 와 같은 코드가 _POST 변수로 사용되는 것을 막음 // 081029 : letsgolee 님께서 도움 주셨습니다. @@ -49,12 +25,6 @@ for ($i=0; $i<$ext_cnt; $i++) { } //========================================================================================================================== -// PHP 4.1.0 부터 지원됨 -// php.ini 의 register_globals=off 일 경우 -@extract($_GET); -@extract($_POST); -@extract($_SERVER); - // 완두콩님이 알려주신 보안관련 오류 수정 // $member 에 값을 직접 넘길 수 있음 $config = array(); @@ -97,6 +67,30 @@ if (file_exists($dbconfig_file)) { @mysql_query(" set names utf8 "); if(defined('G5_MYSQL_SET_MODE') && G5_MYSQL_SET_MODE) @mysql_query("SET SESSION sql_mode = ''"); if (defined(G5_TIMEZONE)) @mysql_query(" set time_zone = '".G5_TIMEZONE."'"); + + //============================================================================== + // SQL Injection 등으로 부터 보호를 위해 mysql_real_escape_string() 적용 + //------------------------------------------------------------------------------ + // magic_quotes_gpc 에 의한 backslashes 제거 + if (get_magic_quotes_gpc()) { + $_POST = array_map_deep('stripslashes', $_POST); + $_GET = array_map_deep('stripslashes', $_GET); + $_COOKIE = array_map_deep('stripslashes', $_COOKIE); + $_REQUEST = array_map_deep('stripslashes', $_REQUEST); + } + + // mysql_real_escape_string 적용 + $_POST = array_map_deep('mysql_real_escape_string', $_POST); + $_GET = array_map_deep('mysql_real_escape_string', $_GET); + $_COOKIE = array_map_deep('mysql_real_escape_string', $_COOKIE); + $_REQUEST = array_map_deep('mysql_real_escape_string', $_REQUEST); + //============================================================================== + + // PHP 4.1.0 부터 지원됨 + // php.ini 의 register_globals=off 일 경우 + @extract($_GET); + @extract($_POST); + @extract($_SERVER); } else { ?> diff --git a/lib/common.lib.php b/lib/common.lib.php index e22a53413..8f70a6a34 100644 --- a/lib/common.lib.php +++ b/lib/common.lib.php @@ -7,6 +7,24 @@ if (!defined('_GNUBOARD_')) exit; ** *************************************************************************/ +// multi-dimensional array에 사용자지정 함수적용 +function array_map_deep($fn, $array) +{ + if(is_array($array)) { + foreach($array as $key => $value) { + if(is_array($value)) { + $array[$key] = array_map_deep($fn, $value); + } else { + $array[$key] = call_user_func($fn, $value); + } + } + } else { + $array = call_user_func($fn, $array); + } + + return $array; +} + // 마이크로 타임을 얻어 계산 형식으로 만듦 function get_microtime() { From 95d697a99aecaa4498a17ae010e3fa643dc94a57 Mon Sep 17 00:00:00 2001 From: chicpro Date: Wed, 19 Feb 2014 08:59:18 +0900 Subject: [PATCH 02/14] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EA=B8=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EC=8B=9C=20=EA=B3=B5=EC=A7=80=EC=B2=B4=ED=81=AC=20?= =?UTF-8?q?=ED=95=B4=EC=A0=9C=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/common.lib.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/common.lib.php b/lib/common.lib.php index 8f70a6a34..624017d40 100644 --- a/lib/common.lib.php +++ b/lib/common.lib.php @@ -2320,10 +2320,11 @@ function https_url($dir, $https=true) // 게시판의 공지사항을 , 로 구분하여 업데이트 한다. function board_notice($bo_notice, $wr_id, $insert=false) { - if(strpos($bo_notice, strval($wr_id)) !== false) + $notice_array = explode(",", trim($bo_notice)); + + if($insert && in_array($wr_id, $notice_array)) return $bo_notice; - $notice_array = explode(",", trim($bo_notice)); $notice_array = array_merge(array($wr_id), $notice_array); $notice_array = array_unique($notice_array); foreach ($notice_array as $key=>$value) { From 847df782b51cce653c3a87a6789b81923737eeb0 Mon Sep 17 00:00:00 2001 From: chicpro Date: Thu, 20 Feb 2014 08:52:29 +0900 Subject: [PATCH 03/14] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90=20=EB=B3=B5?= =?UTF-8?q?=EC=82=AC=20=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95=20-=20?= =?UTF-8?q?=EC=B0=B8=EC=97=86=EB=8B=A4=EB=8B=98=20=EB=B3=B4=EA=B3=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adm/board_copy_update.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adm/board_copy_update.php b/adm/board_copy_update.php index e89c4468b..9537ed786 100644 --- a/adm/board_copy_update.php +++ b/adm/board_copy_update.php @@ -61,7 +61,7 @@ $sql = " insert into {$g5['board_table']} bo_use_nogood = '{$board[bo_use_nogood]}', bo_use_signature = '{$board[bo_use_signature]}', bo_use_ip_view = '{$board[bo_use_ip_view]}', - bo_use_list_view = '{$board['o_use_list_view']}', + bo_use_list_view = '{$board['bo_use_list_view']}', bo_use_list_content = '{$board[bo_use_list_content]}', bo_table_width = '{$board[bo_table_width]}', bo_subject_len = '{$board[bo_subject_len]}', From aa66a8757991e3cda0f2e1b25c904aed7e52325c Mon Sep 17 00:00:00 2001 From: whitedot Date: Thu, 20 Feb 2014 09:45:37 +0900 Subject: [PATCH 04/14] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90:=20btn=5Fcanc?= =?UTF-8?q?el=20=EC=8A=A4=ED=83=80=EC=9D=BC=20a=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/admin.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/css/admin.css b/css/admin.css index ede367374..3b42d12a9 100644 --- a/css/admin.css +++ b/css/admin.css @@ -135,7 +135,8 @@ h2.h2_frm {padding-top:15px} .btn_submit {background:#ff3061;cursor:pointer} .btn_confirm .btn_submit {padding:0 15px;border:0;height:30px;color:#fff} -.btn_cancel {display:inline-block;padding:0 15px;height:30px;border:0;background:#617d46;color:#fff;text-decoration:none;line-height:2.5em;vertical-align:middle} +.btn_cancel {display:inline-block;padding:0 15px;height:30px;border:0;background:#617d46;color:#fff;text-decoration:none} +a.btn_cancel {line-height:2.5em;vertical-align:middle} .btn_frmline {display:inline-block;padding:0 7px;height:24px;border:0;background:#444;color:#fff !important;letter-spacing:-0.1em;text-decoration:none;vertical-align:middle;line-height:2em} /* 우편번호검색버튼 등 */ .btn_frmline:focus, .btn_frmline:hover, .btn_frmline:active {text-decoration:none} From 7bd383b7cf9d64bcd513674536542eb976430b2b Mon Sep 17 00:00:00 2001 From: whitedot Date: Thu, 20 Feb 2014 10:14:41 +0900 Subject: [PATCH 05/14] =?UTF-8?q?=EA=B3=B5=ED=86=B5:=20=ED=8C=9D=EC=97=85?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=96=B4=20=EC=9E=85=EB=A0=A5=EB=90=9C=20?= =?UTF-8?q?=EB=82=B4=EC=9A=A9=EC=9D=B4=20=EC=84=A4=EC=A0=95=EB=90=9C=20?= =?UTF-8?q?=EB=86=92=EC=9D=B4=EB=B3=B4=EB=8B=A4=20=EA=B8=B8=20=EB=95=8C=20?= =?UTF-8?q?=EB=8B=AB=EA=B8=B0=20=EB=B2=84=ED=8A=BC=20=EA=B0=80=EB=A0=A4?= =?UTF-8?q?=EC=A7=80=EB=8A=94=20=ED=98=84=EC=83=81=20=EC=88=98=EC=A0=95,?= =?UTF-8?q?=20=EC=B0=B8=EC=97=86=EB=8B=A4(uyong)=EB=8B=98=20=EC=A0=9C?= =?UTF-8?q?=EB=B3=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bbs/newwin.inc.php | 4 ++-- css/default.css | 4 ++-- css/mobile.css | 4 ++-- mobile/newwin.inc.php | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/bbs/newwin.inc.php b/bbs/newwin.inc.php index 176638c70..139fbfa17 100644 --- a/bbs/newwin.inc.php +++ b/bbs/newwin.inc.php @@ -17,8 +17,8 @@ for ($i=0; $row_nw=sql_fetch_array($result); $i++) ?> -
-
+
+