포럼

펑....

2013.12.01 19:26

Canto

서브도메인이나 m 도메인 사용시에


checCSRF 에서 Referer과 기본 주소를 프로토콜 포함해서 풀로 검색할려고 하기때문에..


false 값이 돌아오는 것 같습니다.


그래서 글이나 댓글 작성할 때 올바르지 않은 요청 입니다 (?) 였나? 하는 경고나 나오더군요..


기본주소에서 프로토콜을 빼고.. 호스트명만 가지고 비교를 하고.. 또 strstr 로 Referer과 비교하던걸 


패턴 매칭을 통해서 비교하면 어떨 까 싶습니다.


일단 제가 생각한 것은 


function checkCSRF()
{
	if($_SERVER['REQUEST_METHOD'] != 'POST')
	{
		return FALSE;
	}

	$defaultUrl = Context::getDefaultUrl();
	$referer = parse_url($_SERVER["HTTP_REFERER"]);

	$oModuleModel = getModel('module');
	$siteModuleInfo = $oModuleModel->getDefaultMid();

	if($siteModuleInfo->site_srl === 0)
	{
		if(!strstr(strtolower($defaultUrl), strtolower($referer['host'])))
		{
			return FALSE;
		}
	}
	else
	{
		$virtualSiteInfo = $oModuleModel->getSiteInfo($siteModuleInfo->site_srl);
		$virtualSiteUrl = parse_url($virtualSiteInfo->domain);

		if(strtolower($virtualSiteInfo->domain) != strtolower(Context::get('vid')) && !preg_match('/^([a-z]+\.)?'.$virtualSiteUrl['host'].'$/',$referer['host']))
		{
			return FALSE;
		}
	}

	return TRUE;
}


이런 식으로 


$virtualSiteUrl = parse_url($virtualSiteInfo->domain); 


도메인에서 호스트 부분만 빼 온 다음에 


!preg_match('/^([a-z]+\.)?'.$virtualSiteUrl['host'].'$/',$referer['host'])


이렇게 패턴 매칭으로 서브도메인으로 접속해 있는 경우 걸리지 않게 해주는 것입니다.

물론 asdf.서브도메인.기본주소.asdf.kr  식이나 서브도메인.기본주소.asdf.kr 식으로 들어오면 false 가 되는 식으로요..


몇일 전부터 모바일 전용 주소를 사용하고 있었는데.. 모바일 주소로 접속하면 글쓰기와 댓글쓰기가 안된다고 하셔서....


뭐가 문제이지 하고 찾아봤더니 저기서 걸리더군요... (...)


일단 github 에도 이슈로 올려놓긴 했지만 여기서 공개 토론(?) 을 하면 더 좋은 방법이 나오지 않을까 해서 올려봅니다.


글쓴이 제목 최종 글
jiom HTML5 기본 레이아웃 소스 [6] file 2013.12.05 by jiom
Canto HTML5의 위치검색 라이브러리.. [6] 2013.12.05 by Canto
정도의길을걷기싫다 PostgreSQL 과 MySQL 퍼포먼스의 차이가 있을까요? [2] 2013.12.05 by 정도의길을걷기싫다
explode 페이지 모듈/게시판 리스트에서 내용 출력하는 애드온 [2] file 2013.12.04 by 쿡래빗
착한악마 혹시 다들 게시판 확장변수에 다국어지원 되시나요?? [6] 2013.12.04 by 애니즌
벨몽이 트랙백 기능 다들 활용하시나요? [3] 2013.12.04 by 벨몽이
socialskyo 저는 요즘 쉬운 설치가 먹통이네요. [4] 2013.12.04 by socialskyo
라피에르 몸에 진땀나며 얻은 이상한 팁을 공유합니다. (관리자 메뉴목록 편집에서 게시판 목록만 삭제 되었을 때) [5] 2013.12.04 by explode
socialskyo 1.7.4 beta 쓰시는 분들에게 질문 [7] 2020.03.14 by 콩치
explode 이거 XE 포인트 버그인가요? [7] file 2013.12.03 by 도라미
푸시아 꿀위키 질문하는 법 링크  
explode 중대한 자료실/지식인 모듈 취약점 [12] 2020.03.14 by explode
쿡래빗 여러가지 프로그램 소스관리 하는 비결? [10] 2013.12.02 by 컴토피아
뮤르시엘라고 webgift님에게 연락할수있는 방법이 있나요? [4] 2013.12.02 by explode
YJSoft 이슈 등록도 스마트하게(?)! - 1. 이슈 등록 [4] 2013.12.02 by Canto
explode FTP 사용하시나요? [9] 2013.12.02 by 컴토피아
Canto 펑.... [12] 2013.12.02 by explode
cousinshin 레이아웃 스킨 올리려는데 [11] 2013.12.01 by 정도의길을걷기싫다
Lansi XE 관리자 페이지가 모바일도 지원했었네요 [1] 2013.12.01 by 벨몽이
푸시아 아마존 한국인 개발자 인터뷰 내용의 블로그인데 [1] 2014.03.28 by Kimㅇ.ㅅ