diff --git a/adm/config_form.php b/adm/config_form.php
index b53870be1..5f9ff4d5b 100644
--- a/adm/config_form.php
+++ b/adm/config_form.php
@@ -134,6 +134,11 @@ if(!isset($config['cf_sms_use'])) {
ADD `cf_icode_server_port` varchar(255) NOT NULL DEFAULT '' AFTER `cf_icode_server_ip` ", true);
}
+if(!isset($config['cf_mobile_page_rows'])) {
+ sql_query(" ALTER TABLE `{$g5['config_table']}`
+ ADD `cf_mobile_page_rows` int(11) NOT NULL DEFAULT '0' AFTER `cf_page_rows` ", true);
+}
+
if(!isset($config['cf_faq_skin'])) {
sql_query(" ALTER TABLE `{$g5['config_table']}`
ADD `cf_faq_skin` varchar(255) NOT NULL DEFAULT '' AFTER `cf_connect_skin`,
@@ -268,10 +273,15 @@ if ($config['cf_icode_id'] && $config['cf_icode_pw']) {
|
-
+ |
분
|
+ |
+
+
+ 라인
+ |
|
@@ -279,10 +289,10 @@ if ($config['cf_icode_id'] && $config['cf_icode_pw']) {
라인
- |
+ |
-
- 라인
+
+ 라인
|
diff --git a/adm/config_form_update.php b/adm/config_form_update.php
index 75dbbeb58..58fbfec9e 100644
--- a/adm/config_form_update.php
+++ b/adm/config_form_update.php
@@ -101,6 +101,7 @@ $sql = " update {$g5['config_table']}
cf_movie_extension = '{$_POST['cf_movie_extension']}',
cf_formmail_is_member = '{$_POST['cf_formmail_is_member']}',
cf_page_rows = '{$_POST['cf_page_rows']}',
+ cf_mobile_page_rows = '{$_POST['cf_mobile_page_rows']}',
cf_stipulation = '{$_POST['cf_stipulation']}',
cf_privacy = '{$_POST['cf_privacy']}',
cf_open_modify = '{$_POST['cf_open_modify']}',
diff --git a/bbs/faq.php b/bbs/faq.php
index 35906477d..d3fe9406e 100644
--- a/bbs/faq.php
+++ b/bbs/faq.php
@@ -73,7 +73,7 @@ if(is_file($skin_file)) {
if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)
- $page_rows = G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'];
+ $page_rows = G5_IS_MOBILE ? $config['cf_mobile_page_rows'] : $config['cf_page_rows'];
$sql = " select count(*) as cnt
from {$g5['faq_table']}
diff --git a/common.php b/common.php
index abd7fc1d5..823f4f00c 100644
--- a/common.php
+++ b/common.php
@@ -80,10 +80,10 @@ if (file_exists($dbconfig_file)) {
}
// sql_escape_string 적용
- $_POST = array_map_deep('sql_escape_string', $_POST);
- $_GET = array_map_deep('sql_escape_string', $_GET);
- $_COOKIE = array_map_deep('sql_escape_string', $_COOKIE);
- $_REQUEST = array_map_deep('sql_escape_string', $_REQUEST);
+ $_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 부터 지원됨
diff --git a/install/gnuboard5.sql b/install/gnuboard5.sql
index 8a79450fa..c2f159ef8 100644
--- a/install/gnuboard5.sql
+++ b/install/gnuboard5.sql
@@ -269,6 +269,7 @@ CREATE TABLE IF NOT EXISTS `g5_config` (
`cf_movie_extension` varchar(255) NOT NULL DEFAULT '',
`cf_formmail_is_member` tinyint(4) NOT NULL DEFAULT '0',
`cf_page_rows` int(11) NOT NULL DEFAULT '0',
+ `cf_mobile_page_rows` int(11) NOT NULL DEFAULT '0',
`cf_visit` varchar(255) NOT NULL DEFAULT '',
`cf_max_po_id` int(11) NOT NULL DEFAULT '0',
`cf_stipulation` text NOT NULL,
diff --git a/install/install_db.php b/install/install_db.php
index 294931c07..e88493be4 100644
--- a/install/install_db.php
+++ b/install/install_db.php
@@ -170,6 +170,7 @@ if($g5_install || !$result) {
cf_movie_extension = 'asx|asf|wmv|wma|mpg|mpeg|mov|avi|mp3',
cf_formmail_is_member = '1',
cf_page_rows = '15',
+ cf_page_rows = '15',
cf_cert_limit = '2',
cf_stipulation = '해당 홈페이지에 맞는 회원가입약관을 입력합니다.',
cf_privacy = '해당 홈페이지에 맞는 개인정보처리방침을 입력합니다.'
diff --git a/lib/common.lib.php b/lib/common.lib.php
index 87839e139..240c0866a 100644
--- a/lib/common.lib.php
+++ b/lib/common.lib.php
@@ -1451,8 +1451,14 @@ function sql_select_db($db, $connect)
// mysql_query 와 mysql_error 를 한꺼번에 처리
function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR)
{
+ // Blind SQL Injection 취약점 해결
+ $sql = trim($sql);
+ // union의 사용을 허락하지 않습니다.
+ $sql = preg_replace("#^select.*from.*union.*#i", "select 1", $sql);
+ // `information_schema` DB로의 접근을 허락하지 않습니다.
+ $sql = preg_replace("#^select.*from.*where.*`?information_schema`?.*#i", "select 1", $sql);
if ($error)
- $result = @mysql_query($sql) or die("$sql
" . mysql_errno() . " : " . mysql_error() . "
error file : {$_SERVER['PHP_SELF']}");
+ $result = @mysql_query($sql) or die("
$sql
" . mysql_errno() . " : " . mysql_error() . "
error file : $_SERVER[PHP_SELF]");
else
$result = @mysql_query($sql);
return $result;