관리자 CSRF 취약점 수정
This commit is contained in:
@ -346,6 +346,54 @@ function order_select($fld, $sel='')
|
||||
return $s;
|
||||
}
|
||||
|
||||
// 불법접근을 막도록 토큰을 생성하면서 토큰값을 리턴
|
||||
function get_admin_token()
|
||||
{
|
||||
$token = md5(uniqid(rand(), true));
|
||||
set_session('ss_admin_token', $token);
|
||||
|
||||
return $token;
|
||||
}
|
||||
|
||||
|
||||
// POST로 넘어온 토큰과 세션에 저장된 토큰 비교
|
||||
function check_admin_token()
|
||||
{
|
||||
$token = get_session('ss_admin_token');
|
||||
set_session('ss_admin_token', '');
|
||||
|
||||
if(!$token || !$_POST['token'] || $token != $_POST['token'])
|
||||
alert('올바른 방법으로 이용해 주십시오.');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// 관리자 페이지 referer 체크
|
||||
function admin_referer_check($return=false)
|
||||
{
|
||||
$referer = trim($_SERVER['HTTP_REFERER']);
|
||||
if(!$referer) {
|
||||
$msg = '정보가 올바르지 않습니다.';
|
||||
|
||||
if($return)
|
||||
return $msg;
|
||||
else
|
||||
alert($msg, G5_URL);
|
||||
}
|
||||
|
||||
$p = @parse_url($referer);
|
||||
$host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']);
|
||||
|
||||
if($host != $p['host']) {
|
||||
$msg = '올바른 방법으로 이용해 주십시오.';
|
||||
|
||||
if($return)
|
||||
return $msg;
|
||||
else
|
||||
alert($msg, G5_URL);
|
||||
}
|
||||
}
|
||||
|
||||
// 접근 권한 검사
|
||||
if (!$member['mb_id'])
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user