문제해결 팁 : XE에서 "보안 문제로 관리자 아이디로는 embed를 볼 수 없습니다. 확인하려면 다른 아이디로 접속하세요"




XE에서는 아래와 같은 메시지가 종종 보입니다.

동영상 embed 태그를 차단한 것인데요.

보안을 위해 복잡한 방법을 써도 우회할테니 아예 불편이 따르더라도 원천차단해버리는 단순무식한 방법


 

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

 

 

아래는 게시물을 보려고 할 때 위의 메시지가 나타난다는 질문에 XE홈페이지에 올라와 있는 답변.

--------------------------------------------------------------------------------------------------

CSRF라는 해킹 기법이 있습니다.

이걸 이용하면 모티브비즈님 사이트에 최고관리 권한의 아이디를 생성할 수 있습니다.

쉽게 말씀드리면 Javascript, Flash등을 통해 최고관리자가 글을 볼 때 글을 보고 있는 최고 관리자의 권한으로 무엇이든 할 수 있는 것입니다.

사이트 관리를 위해서만 최고관리자로 접속을 하시고 그렇지 않을 경우는 일반 아이디를 만들어서 사용하시는 것을 권해드립니다.

다만 이 방법이 불편하기에 최고관리자로 접속시 CSRF 해킹 기법이 아예 통하지 않도록 해버린 것입니다.

자바스크립트나 HTML 코드를 이용한 취약 코드와 달리 플래시는 XE에서 내용에 어떤 코드가 있는지 알수 없기에 아예 막아버린 것이구요, 어떻게든 풀어버리시면 보안 취약점 분명 발생하는 것이라고 말씀드리고 싶네요.

이 CSRF는 XE뿐 아니라 모든 웹프로그램에 존재하는 것입니다.

 

--------------------------------------------------------------------------------------------------

 

 이 경우 아래와 같이 func.inc.php 멀티미디어 링크 전체 필터링 전에 특정 사이트(youtube 등)는 제외 시켜 줌으로써 문제를 해결 할 수 있습니다.

 

http://koreasushi.tistory.com/1013

 

func.inc.phptistory_com_20140403_103000.jpg
/config

 

  1. $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>";
  2. $content = preg_replace('/<object[^>]+>(.*?<\/object>)?/is', $security_msg, $content);
  3. $content = preg_replace('/<embed[^>]+>(\s*<\/embed>)?/is', $security_msg, $content);
  4. $content = preg_replace('/<img[^>]+editor_component="multimedia_link"[^>]*>(\s*<\/img>)?/is', $security_msg, $content);
  5. }
  6. return;

-------------------------------------------------------------------------------------------------------------------------------------------------------- 

 단순히 주석 처리하면 멀티미디어 링크에 포함된 embed, object도 통과 되므로, youtube, daum, vimeo 등 특정한 값에 대해서만 통과되도록 수정.

-------------------------------------------------------------------------------------------------------------------------------------------------------- 

 

  1. // youtube, daum 영상에 대해 보안메시지 출력하지 않도록 추가
  2. if(!preg_match("!youtube|daum!is",$content)) {
  3. $content = preg_replace('/]+editor_component="multimedia_link"[^>]*>(\s*<\/img>)?/is', $security_msg, $content);
  4. }

--------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

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

List of Articles
번호 제목 날짜sort 조회 수
공지 기타 내가 궁굼해 하는 것들을 다른 사람들도 궁굼해 한다면? file [182] 2012-01-05 120130

Top