Exemplo n.º 1
0
        /// <summary>
        /// 현재 페이지를 호출한 페이지가 같은 서버 안에 있는 지 여부를 리턴함.
        /// </summary>
        /// <param name="ErrMsgIs"></param>
        /// <returns></returns>
        /// <example>
        /// <![CDATA[
        /// 다음은 현재 페이지를 호출한 페이지가 다른 사이트의 페이지이면 에러 메세지를 출력하고 더 이상 진행하지 않음.
        /// if (!IsRefererInSameServer(out ErrMsgIs)
        /// {
        ///		Response.Write(ErrMsgIs);
        ///		Response.End();
        /// }
        /// ]]>
        /// </example>
        public static bool IsRefererInSameServer(out string ErrMsgIs)
        {
            ErrMsgIs = "";

            string Referer = CFindRep.IfNullThenEmpty(HttpContext.Current.Request.ServerVariables.Get("HTTP_REFERER"));

            if (Referer == "")
            {
                Referer = CWeb.GetRemoteIpAddress(HttpContext.Current);
            }

            Referer = CPath.GetServerUrl(Referer).ToLower();

            string Server = HttpContext.Current.Request.ServerVariables.Get("LOCAL_ADDR");

            Server = CPath.GetServerUrl(Server).ToLower();

            if (Referer == Server)
            {
                return(true);
            }

            Server = HttpContext.Current.Request.ServerVariables.Get("HTTP_HOST");
            Server = CPath.GetServerUrl(Server).ToLower();

            if (Referer == Server)
            {
                return(true);
            }

            ErrMsgIs = "서버명이 다음과 같이 일치하지 않습니다.\r\n클라이언트: " + Referer + ", 서버: " + Server;
            return(false);
        }