CI 묻고 답하기

제목 useragent class중
글쓴이 니삼 작성시각 2012/08/09 18:21:44
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 15909   RSS
로그인 리턴url을 만드려는중에

$this->agent->referrer();를 이용해 이전 url을 구해오려고 했습니다.

그리고 우리 도메인이 아닌곳에서 넘어왔을경우 다른 도메인으로 리턴을 안시키려고 처리하려고 보니 

is_referral() 이녀석이 있내요? 

번역은
'user agent 가 다른 사이트에서 여러분의 사이트로 넘어왔는지 여부에 따라 TRUE/FALSE 를 리턴합니다.'
이렇게 되어있고 원문은 
Is this a referral from another site? 이거 인것같습니다.
근데 실제 소스를 보면

public function is_referral()
{
 if ( ! isset($_SERVER['HTTP_REFERER']) OR $_SERVER['HTTP_REFERER'] == '')
 {
  return FALSE;
 }
 return TRUE;
}

그저 이전페이지가 있는지 없는지만 체크하는것 같더라구요...

분명 $_SERVER['HTTP_REFERER']는 다른 사이트에서 넘겨도 넘어가는거 아닌가요? 

뭔가 질문이 아니라 저가 이해를 못해서 이해 시켜달라는 글인지 질문인지 구분을 못하겠내요 ㅋㅋ;

 다음글 웹페이지를 통으로 이메일보내기 (3)
 이전글 간단 질문 2개!!! (5)

댓글

한대승(불의회상) / 2012/08/09 19:31:53 / 추천 0
ㅎㅎ 그렇네요. ^^
니삼 / 2012/08/10 00:24:33 / 추천 0
대강 번역이랑 같은 느낌으로 따로 구현해버렸습니다 ㄲㄲ;
니삼 / 2012/08/10 00:29:07 / 추천 0
if(parse_url($this->agent->referrer(), PHP_URL_HOST) != parse_url($this->config->item('base_url'), PHP_URL_HOST)){
return FALSE;
}else{
return TRUE;
}

 

kaido / 2012/08/10 15:06:44 / 추천 0
질문과는 다른 내용입니다만...

 레퍼런스 체크는 가급적 빼시는게 좋다고 생각합니다.
별 소용이 없거든요.

레퍼런스 체크는 직접
URL 창을 치고 들어올때 빈값이 들어오는 체크와 넘어온 주소의 
URL 분석해서 어디에서 넘어왔는지  2가지뿐이 체크를 못하는것으로 알고 있습니다.

문제는 레퍼런스 값은 날조 가 가능 합니다.
(그것도 아주 쉽게 검색 하면 떡하니 방법이 나옵니다.)

즉 임의로 만들어서 넘길수가 있기 때문에 제가 보기엔 생색 내기용 보안 체크 입니다.
니삼 / 2012/08/10 18:43:29 / 추천 0
 kaldo//
네... 그렇죠
저가 이렇게 쓴 이유는 보안적인 목적이 아니라.
로그인후 그 뒤 페이지로 보내주기 위해선대
다른페이지에서 왔을때 다른페이지로 리턴해주면 안되니까 ㄲㄲㅋ
위조해봐야 자기가 위조한곳으로 가는게 전혀 문제가 없을거라 생각해서 이렇게 구성했죠