포럼
유투브 아이프레임 등록에 관련해서
2016.06.03 00:48
회원중 한분이 유투브 동영상이 등록이 안된대서 봤더니
관리자의 경우 whiteiframe 체크를 건너뛰는데
일반회원의 경우 whiteiframe 체크를 하고 갑니다.
문제는 제사이트만의 오류일지 모르는데, 제대로 화이트도메인으로 유투브가 등록되어있음에도 불구하고
계속 필터링 되어버리더라구요..
일단
/classes/security/conf/embedWhiteUrl.xml 파일에서
embed 블록안에 <pattern>https://youte.be/</pattern>
iframe 블록안에 <pattern>https://youte.be/</pattern>
을 추가하여 넣었습니다.
이후 /classess/security/Purifier.class.php 파일을 에서
private function _getWhiteDomainRegx() {
}
이부분을 아래와 같이 수정하였습니다.
private function _getWhiteDomainRegx() { $oEmbedFilter = EmbedFilter::getInstance(); $whiteIframeUrlList = $oEmbedFilter->getWhiteIframeUrlList(); $whiteDomain = array(); foreach($whiteIframeUrlList as $value) { $domain = rtrim(preg_replace("/\s+/", "", $value), "/"); $domain = str_replace(array("http://","https://"), '', $domain); array_push($whiteDomain, $domain); } $whiteDomain = array_unique($whiteDomain); $whiteDomainRegex = '%^(https?:)?//(' . implode("|",$whiteDomain) . ')%'; return $whiteDomainRegex; }
고수님들이 보시면 좀더 최적화 시킬수 있는 코드이겠지만..
제 딴에는 나름 구현에 급급해서 겨우겨우 완성한 코드입니다.
정규식 자체에 %^(http://www.youtube.com|https://www.youtube.com|~~~~~ 이하생략)%
이렇게 붙어있는것은 preg_match가 안되는데
아예 %^(https?:)?//(www.youtube.com|www.daum.net)%
이렇게 정규식을 만들어버리니깐 인식이 되는것같더라구요...
(솔직히 아직 제가 지식이 짧아 이유는 모르겠구... 그냥 삽질하다가 저렇게 빼보니깐 되더라구요..)
제사이트만의 문제일지도 모르지만 혹시라도 헤매고 계시는분 계실지 몰라서
조금이라도 도움이 되시라고 올렸습니다.
PS.. 밑에 유투브 자동삽입 플러그인 찾으시는 분 있던데
저는 ckeditor 공홈에서 youtube 플러그인 가져다 쓰고있습니다.
입력창이 아래처럼 나옵니당
1. 관리자 화면에서 embed filter를 커스터마이징한 경우에는 embedWhiteUrl.xml 파일을 수정해도 적용되지 않습니다. 그 파일은 아무 것도 설정하지 않은 경우의 기본값일 뿐이고, 설정을 한 번이라도 변경한 적이 있다면 db.config.php에 별도 저장된 목록을 사용하거든요.
2. 보안 취약점이 있는 구버전의 Purifier.class.php 파일을 기반으로 수정하신 것 같습니다.