ajax로 데이터 전송 및 처리시 데이터 전송지에 대한 검증을 하기 위한 로직
url_helper.php
if ( ! function_exists('checkDomain'))
{
function checkDomain($method = ""){
$return = true;
if($method !== "") {
if(!empty($_SERVER['REQUEST_METHOD'])) {
$return = ($_SERVER['REQUEST_METHOD'] == $method) ? true : false;
} else {
$return = false;
}
}
if($return) {
if(!empty($_SERVER["HTTP_REFERER"])) {
$return = (getDomainName($_SERVER["HTTP_REFERER"]) == getDomainName(base_url())) ? true : false;
} else {
$return = false;
}
}
return $return;
}
}
checkDomain("POST"), checkDomain("GET"), checkDomain() 함수를 호출하면
1. 전달받은 데이터의 METHOD가 같은지 확인하고
2. 이전 URL 의 REFERERE 값과 셋팅되어 있는 base_url 의 값이 같은지 확인한다.
getDomainName() : 전달받은 URL에서 도메인 정보만 뽑아온다.
ex) https://www.naver.com/test?check=test 일 경우 www.naver.com 만 뽑아온다.
if ( ! function_exists('getDomainName'))
{
function getDomainName($url)
{
$host = "";
if($url != ""){
$value = strtolower(trim($url));
preg_match("/^http[s]*:\/\/([\.\-\_0-9a-zA-Z]*)\//", $value, $match);
$host = $match ? $match[1] : '-';
$host = preg_replace(
"/^(www\.|search\.|dirsearch\.|dir\.search\.|dir\.|kr\.search\.|myhome\.)(.*)/",
"\\2",
$host
);
}
return $host;
}
}
댓글 영역