포럼

펑....

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 에도 이슈로 올려놓긴 했지만 여기서 공개 토론(?) 을 하면 더 좋은 방법이 나오지 않을까 해서 올려봅니다.


글쓴이 제목 최종 글
푸시아 아마존 한국인 개발자 인터뷰 내용의 블로그인데 [1] 2014.03.28 by Kimㅇ.ㅅ
explode XE 1.4.0 보다 낮은 버전 사용하시는 분 있나요? [5] 2013.11.30 by explode
도라미 다올 cms에 적용될 레이아웃인데 어떤가요? [9] 2013.11.30 by 도라미
jiom 요즘 게시판이나 홈페이지에 해킹있는분들 이거 설치해보세요 [8] 2013.11.30 by explode
쭈영 쉬운설치 잘 되시나요? [1] 2013.11.30 by explode
YJSoft 이슈 등록도 스마트하게(?)! - 2. Pull Request [1] file 2013.11.30 by 쿡래빗
이온디 저는 개인적으로 이게 참 기대됩니다. [1] 2013.11.30 by 쿡래빗
socialskyo 게시판 스킨/모듈 어떤거 사용하세요? [11] 2013.11.29 by neostream
socialskyo XE에도 이정도 디자인과 속도를 보여주는 사이트가 있나요? [11] 2013.11.29 by explode
explode 질문답변 게시판 [5] 2013.11.29 by explode
메테워 누리CMS를 써야할지.. XE팀의 코어를써야할지.. [10] 2013.11.29 by EnterTM
푸시아 [ggshop] XE Resource Module + GG Shop [3] 2013.11.29 by 이온디
Lansi addJsFile()이 deprecated 됐네요 [13] 2020.03.14 by 쿡래빗
슬픔아리 (관리자님좀 봐주세요) Github 인가로 먼가가 바꼈다는데 SVN 주소는... [22] 2013.11.28 by 야옹이님
공수래 modules\editor\components에서  
explode NetCraft Site Report  
Lansi 개발자 문서는 어떻게 하실건가요?  
포쿠쿠 모듈 방명록과 게시판에 대해 [11] 2020.03.14 by BNU
explode 공홈 서버이전 [3] 2013.11.27 by EnterTM
도라미 다올 CMS가 배포 준비가 완료되어가네요... [5] 2013.11.27 by 도라미