mysql_real_escape_string 함수 적용 코드 수정
This commit is contained in:
54
common.php
54
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);
|
@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 변수로 사용되는 것을 막음
|
// extract($_GET); 명령으로 인해 page.php?_POST[var1]=data1&_POST[var2]=data2 와 같은 코드가 _POST 변수로 사용되는 것을 막음
|
||||||
// 081029 : letsgolee 님께서 도움 주셨습니다.
|
// 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 에 값을 직접 넘길 수 있음
|
// $member 에 값을 직접 넘길 수 있음
|
||||||
$config = array();
|
$config = array();
|
||||||
@ -97,6 +67,30 @@ if (file_exists($dbconfig_file)) {
|
|||||||
@mysql_query(" set names utf8 ");
|
@mysql_query(" set names utf8 ");
|
||||||
if(defined('G5_MYSQL_SET_MODE') && G5_MYSQL_SET_MODE) @mysql_query("SET SESSION sql_mode = ''");
|
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."'");
|
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 {
|
} else {
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|||||||
@ -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()
|
function get_microtime()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user