상세 컨텐츠

본문 제목

도메인 체크

Programming/CodeIgniter

by luckey 2020. 1. 17. 11:15

본문

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;
    }
}

관련글 더보기

댓글 영역