본문 바로가기
[ Windows ]/Tip

보안 문제로 관리자 아이디로는 embed를 볼 수 없습니다. 확인하려면 다른 아이디로 접속하세요 경고 메시지 끄기

by すし 2014. 3. 30.

보안 문제로 관리자 아이디로는 embed를 볼 수 없습니다. 확인하려면 다른 아이디로 접속하세요


XE에서는 위와 같이 관리자 ID로 작성한 글이 아닌 다른 사용자의 글을 열람 했을 경우, embed, object를 통한 컨텐츠 출력을 막아 놓았습니다. 보안상 embed, object 태그 등으로 공격 받아 관리자의 정보를 빼앗기지 않게 하기 위해서입니다. 헌데 이미 XE에서는 기본 설정에서 youtube 등을 허용 목록에 저장해두고 있습니다. 그런데도 위와 같이 메시지가 출력되고 있습니다. 이유는 "멀티미디어 링크" 컴포넌트를 통해 영상을 포함시켰을 경우 필터링이 되고 있기 때문입니다. <iframe> 태그를 직접 포함시켜 작성 했을 때는 문제 없이 출력 되기 때문에, 멀티미디어 링크로 포함시켜 iframe으로 출력되는 경우에 필터링이 된다면 모순이라고 볼 수 있습니다. 이 경우 아래와 같이 func.inc.php 멀티미디어 링크 전체 필터링 전에 특정 사이트(youtube 등)는 제외 시켜 줌으로써 문제를 해결 할 수 있습니다.


func.inc.php
/config
		$security_msg = "<div style='border: 1px solid #DDD; background: #FAFAFA; text-align:center; margin: 1em 0;'><p style='margin: 1em;'>" . Context::getLang('security_warning_embed') . "</p></div>";
		$content = preg_replace('/<object[^>]+>(.*?<\/object>)?/is', $security_msg, $content);
		$content = preg_replace('/<embed[^>]+>(\s*<\/embed>)?/is', $security_msg, $content);
		$content = preg_replace('/<img[^>]+editor_component="multimedia_link"[^>]*>(\s*<\/img>)?/is', $security_msg, $content);
	}

	return;
단순히 주석 처리하면 멀티미디어 링크에 포함된 embed, object도 통과 되므로, youtube, daum, vimeo 등 특정한 값에 대해서만 통과되도록 수정.
		// youtube, daum 영상에 대해 보안메시지 출력하지 않도록 추가
		if(!preg_match("!youtube|daum!is",$content)) {
			$content = preg_replace('/<img[^>]+editor_component="multimedia_link"[^>]*>(\s*<\/img>)?/is', $security_msg, $content);
		}


ps. 위 코드는 youtube, daum 단어에 대한 필터링이라 매우 광범위 할 수 있습니다. 조금 더 보안을 생각한다면 구체적으로 작성할 필요는 있습니다.