diff --git a/adm/mail_select_form.php b/adm/mail_select_form.php
index 8aebfd80e..a8115297d 100644
--- a/adm/mail_select_form.php
+++ b/adm/mail_select_form.php
@@ -62,7 +62,7 @@ include_once('./admin.head.php');
|
-
+
|
diff --git a/common.php b/common.php
index 3e12011eb..91a930548 100644
--- a/common.php
+++ b/common.php
@@ -25,14 +25,6 @@ for ($i=0; $i<$ext_cnt; $i++) {
}
//==========================================================================================================================
-// 완두콩님이 알려주신 보안관련 오류 수정
-// $member 에 값을 직접 넘길 수 있음
-$config = array();
-$member = array();
-$board = array();
-$group = array();
-$g5 = array();
-
function g5_path()
{
@@ -54,6 +46,73 @@ include_once($g5_path['path'].'/config.php'); // 설정 파일
unset($g5_path);
+// 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;
+}
+
+
+// SQL Injection 대응 문자열 필터링
+function sql_escape_string($str)
+{
+ $pattern = G5_ESCAPE_PATTERN;
+ $replace = G5_ESCAPE_REPLACE;
+
+ $str = preg_replace($pattern, $replace, $str);
+ $str = call_user_func('addslashes', $str);
+
+ return $str;
+}
+
+
+//==============================================================================
+// SQL Injection 등으로 부터 보호를 위해 sql_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);
+}
+
+// sql_escape_string 적용
+$_POST = array_map_deep(G5_ESCAPE_FUNCTION, $_POST);
+$_GET = array_map_deep(G5_ESCAPE_FUNCTION, $_GET);
+$_COOKIE = array_map_deep(G5_ESCAPE_FUNCTION, $_COOKIE);
+$_REQUEST = array_map_deep(G5_ESCAPE_FUNCTION, $_REQUEST);
+//==============================================================================
+
+
+// PHP 4.1.0 부터 지원됨
+// php.ini 의 register_globals=off 일 경우
+@extract($_GET);
+@extract($_POST);
+@extract($_SERVER);
+
+
+// 완두콩님이 알려주신 보안관련 오류 수정
+// $member 에 값을 직접 넘길 수 있음
+$config = array();
+$member = array();
+$board = array();
+$group = array();
+$g5 = array();
+
+
//==============================================================================
// 공통
//------------------------------------------------------------------------------
@@ -71,30 +130,6 @@ if (file_exists($dbconfig_file)) {
sql_query(" set names utf8 ");
if(defined('G5_MYSQL_SET_MODE') && G5_MYSQL_SET_MODE) sql_query("SET SESSION sql_mode = ''");
if (defined(G5_TIMEZONE)) sql_query(" set time_zone = '".G5_TIMEZONE."'");
-
- //==============================================================================
- // SQL Injection 등으로 부터 보호를 위해 sql_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);
- }
-
- // sql_escape_string 적용
- $_POST = array_map_deep(G5_ESCAPE_FUNCTION, $_POST);
- $_GET = array_map_deep(G5_ESCAPE_FUNCTION, $_GET);
- $_COOKIE = array_map_deep(G5_ESCAPE_FUNCTION, $_COOKIE);
- $_REQUEST = array_map_deep(G5_ESCAPE_FUNCTION, $_REQUEST);
- //==============================================================================
-
- // PHP 4.1.0 부터 지원됨
- // php.ini 의 register_globals=off 일 경우
- @extract($_GET);
- @extract($_POST);
- @extract($_SERVER);
} else {
?>
diff --git a/config.php b/config.php
index 8f7fa01be..a355d956f 100644
--- a/config.php
+++ b/config.php
@@ -162,8 +162,12 @@ define('G5_SMTP', '127.0.0.1');
define('G5_DISPLAY_SQL_ERROR', TRUE);
// escape string 처리 함수 지정
-// POST 등에서 한글이 깨질 경우 addslashes 로 변경
-define('G5_ESCAPE_FUNCTION', 'sql_real_escape_string');
+// addslashes 로 변경 가능
+define('G5_ESCAPE_FUNCTION', 'sql_escape_string');
+
+// sql_escape_string 함수에서 사용될 패턴
+define('G5_ESCAPE_PATTERN', '/(and|or).*(union|select|insert|update|delete|from|where|limit|create|drop).*/i');
+define('G5_ESCAPE_REPLACE', '');
// 게시판에서 링크의 기본개수를 말합니다.
// 필드를 추가하면 이 숫자를 필드수에 맞게 늘려주십시오.
diff --git a/lib/common.lib.php b/lib/common.lib.php
index 5fa08880e..c702dfc4c 100644
--- a/lib/common.lib.php
+++ b/lib/common.lib.php
@@ -7,36 +7,6 @@ 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;
-}
-
-// SQL Injection 대응 문자열 필터링
-function sql_escape_string($str)
-{
- $pattern = '/(and|or).*(union|select|insert|update|delete|from|where|limit|create|drop).*/i';
- $replace = '';
-
- $str = preg_replace($pattern, $replace, $str);
- $str = call_user_func(G5_ESCAPE_FUNCTION, $str);
-
- return $str;
-}
-
// 마이크로 타임을 얻어 계산 형식으로 만듦
function get_microtime()
{