<?php // (2025.2.25, 차재복, Cha Jae Bok, cjbword@gmailcom)
// 긴 쿼리 스트링이면 무조건 거부 (해킹 의심 기록 및 과도 접근 거부)
$qry_str_len = strlen($_SERVER['QUERY_STRING']);
if ($qry_str_len>140) {
mysqli_query($dbi,"insert into hacked (ip,time,stop_time,qry_len,number,filename) values ('".$_SERVER['REMOTE_ADDR']."',now(),now(),$qry_str_len,1,'".$_SERVER[SCRIPT_NAME]."') on duplicate key update stop_time=now(),number=number+1,reject=if((number>5 and minute(stop_time-time)<1) or (number>15),1,0)");
if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";}
exit;
}
// echo $_SERVER['QUERY_STRING'].' : '.$qry_str_len;
/*
anti_hack($dbi);
// 해킹 의심 기록 및 과도 접근 거부
function anti_hack($db_unkonown) {
$qry_str_len=strlen($_SERVER['QUERY_STRING']);
echo gettype($db_unkonown);
echo (gettype($db_unkonown)=='object' ? 'mysqli' : 'mysql');
if(gettype($db_unkonown)=='resource') {
$db=$db_unkonown;
if ($qry_str_len>140) {
$h_result=mysql_query("select * from dict.hacked where ip='".$_SERVER['REMOTE_ADDR']."'",$db);
if (mysql_errno()) {echo mysql_errno()." : ".mysql_error()."\n";}
$h_matched=mysql_fetch_assoc($h_result);
if ($h_matched[reject]==1) exit; // hacked!!!
mysql_query("insert into dict.hacked (ip,time,stop_time,qry_len,number,filename) values ('".$_SERVER['REMOTE_ADDR']."',now(),now(),$qry_str_len,1,'".$_SERVER[SCRIPT_NAME]."') on duplicate key update stop_time=now(),number=number+1,reject=if((number>7 and minute(stop_time-time)<1) or (number>30),1,0)",$db);
if (mysql_errno()) {echo mysql_errno()." : ".mysql_error()."\n";}
}
} else if(gettype($db_unkonown)=='object') {
$dbi=$db_unkonown;
if ($qry_str_len>140) {
$h_result=mysqli_query($dbi,"select * from dict.hacked where ip='".$_SERVER['REMOTE_ADDR']."'");
if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";}
$h_matched=mysqli_fetch_assoc($h_result);
if ($h_matched[reject]==1) exit; // hacked!!!
mysqli_query($dbi,"insert into dict.hacked (ip,time,stop_time,qry_len,number,filename) values ('".$_SERVER['REMOTE_ADDR']."',now(),now(),$qry_str_len,1,'".$_SERVER[SCRIPT_NAME]."') on duplicate key update stop_time=now(),number=number+1,reject=if((number>7 and minute(stop_time-time)<1) or (number>30),1,0)");
if (mysqli_errno($dbi)) {echo mysqli_errno($dbi)." : ".mysqli_error($dbi)."\n";}
}
}
}
*/
// 매개변수 확인 및 전달 매개변수를 변수에 대입
// $m_temp1 = $_REQUEST[m_temp1];
$m_temp1 = ( isset($_REQUEST['m_temp1']) ? $_REQUEST['m_temp1'] : ( isset($_REQUEST['no']) ? $_REQUEST['no'] : null ) );
if ($_REQUEST['mode'] == 'super_edit') $mode='super_edit';
$m_word=$_REQUEST['m_word'];
$m_detail=$_REQUEST['m_detail'];
$m_id=$_REQUEST['m_id'];
if ($m_id < 0) exit; // 해킹방지
$m_id = substr($m_id,0,10); // 해킹 방지, 글자 수 제한
$action = $_REQUEST['action'];
$node_action = $_REQUEST['node_action'];
$m_text = $_REQUEST['m_text'];
$m_opt=$_REQUEST['opt'];
$m_search = ( ! empty($_REQUEST['m_search']) ? $_REQUEST['m_search'] : $_REQUEST['sh'] );
$act = $_REQUEST['act'];
$gita_choice = $_REQUEST['gita_choice'];
$choiced = $_REQUEST['choiced'];
$nav=$_REQUEST['nav'];
$id = $_REQUEST['id'];
if ( !empty($id) ) $cur_id = $id;
// 각 변수별로 해킹 방지
// echo "<br>".$m_temp1."<br>";
if (isset($m_temp1) and !empty($m_temp1) and !is_numeric($m_temp1)) exit; // 해킹방지
$m_temp1 = substr($m_temp1,0,8); // 해킹방지, 숫자 제한
$m_temp1 = str_replace('.','',$m_temp1); // 해킹방지
if (isset($id) and !empty($id) and !is_numeric($id) or $id<0) exit; // 해킹방지
$id = substr($id,0,10); // 해킹 방지, 글자 수 제한
if (isset($nav) and !empty($nav) and !is_numeric($nav)) exit; // 해킹방지
$nav = substr($nav,0,10); // 해킹 방지, 글자 수 제한
if ($m_search < 0) exit; // 해킹방지
if(strlen($m_search)>70) exit; // 해킹방지 (글자 수 많으면 종료)
$m_search = str_replace('\\',' ',$m_search); // 해킹 방지 (\ 제한)
$m_search = str_replace('/..',' ',$m_search); // 해킹 방지 (/.. 제한)
$m_search = substr($m_search,0,55); // 해킹 방지 (글자 수 제한)
if (strlen($mgid)>10) exit; // 해킹방지
// 특정 ip 주소 제한
// if ($_SERVER['REMOTE_ADDR'] == '103.78.133.129') exit;
?>