98..Etc/Etc...2008. 7. 11. 17:50
반응형

String ref = request.getHeader("REFERER");

ref에 변수에 호출된 URL정보가 들어갑니다.

ref값이 null일 경우가 있는데 이는 브라우저 URL입력창에 입력 호출했을때는
null이 됩니다.

위의 방법을 이용해 자신의 컨텐츠가 무단 도용당하는걸 막거나 할때 유용하게 쓸수 있습니다.





레퍼러값을 체크하는 방법 2가지 입니다. 먼저, 레퍼러값이 null 값일경우 Default.aspx 페이지로 리다이렉팅. 만일 레퍼러값이 있을경우 현재, 사이트의 도메인과 레퍼러주소의 도메인이 다를경우 다시 Redirect 를 합니다. 바로 Redirect 를 해도 되지만, 자바스크립트로 Alert 를 띄운후 처리..
public void UrlReferrerCheck(string refferUrl)
{
     if(Request.UrlReferrer == null)
          {
 string script = "< script>alert('직접 접근할 수 없습니다!!');" +
       "location.href='/Default.aspx';";
 Page.RegisterClientScriptBlock("done", script);
 //Response.Redirect(refferUrl);
 
          }
          else
          {
 string refer = Request.UrlReferrer.ToString();
 string ServerPath = Request.Url.ToString();
 ServerPath = ServerPath.Substring(0,ServerPath.LastIndexOf("/"));

 if(refer.IndexOf(ServerPath) == -1)
 {
      string script = "< script>alert('직접 접근할 수 없습니다!!');" +
            "location.href='/Default.aspx';";
      Page.RegisterClientScriptBlock("done", script);
      //Response.Redirect(refferUrl);
 }
          }
}




<%@ page contentType="text/html; charset=MS949"  %>
<%
    String referer = request.getHeader("Referer");
    String url = request.getRequestURL().toString();
    String ctxPath = request.getContextPath();
    int port = request.getServerPort();
    String host = request.getServerName();
    String tmp = "";
    if (port == 80) {
        tmp = "http://" + host + ctxPath;
    }
    else {
        tmp = "http://" + host + ":" + port + ctxPath;
    }

    if (referer == null) {
%>
<HTML>
<HEAD><TITLE>Sorry</TITLE></HEAD>
<BODY>
<CENTER>

       Sorry... <br />
       <font color=red>URL 주소 직접 치고 들어 오지 마세요...</font>

</CENTER>
</BODY>
</HTML>
<%
        return;
    }
    else if (!url.startsWith(tmp)) {
%>
<HTML>
<HEAD><TITLE>Sorry again</TITLE></HEAD>
<BODY>
<CENTER>

       Sorry again... <br />
       <font color=red>다른데서 여기를 링크 걸지 마세요...</font>

</CENTER>
</BODY>
</HTML>
<%
        return;
    }
%>

<HTML>
<HEAD><TITLE>Success</TITLE></HEAD>
<BODY>
<CENTER>

       <font color=blue>성공!!</font> <br /> <br />
       <font size=+2 color=blue>환영!!</font>

</CENTER>
</BODY>
</HTML>
 
 
 
 
 PHP
if (!eregi($_SERVER['HTTP_HOST'], $_SERVER['HTTP_REFERER'])){
 echo "<SCRIPT>alert('외부접근을 허용하지않습니다.');".$parent."location.href='javascript:history.go(-1);';</SCRIPT>"; exit;
}

ASP
Request.ServerVariables("HTTP_REFERER")

Posted by 1010