월 초에 XE 1.7에서 아이프레임이 완전히 막혔다는 말을 듣고 XE 1.7.3에서 iframe 태그 동작 테스트를 한적이 있다. (http://gunmania.playmp3.kr/tc/327)
결과는 관리자 계정으로는 모든 도메인에서 iframe으로 불러올 수 있지만 관리자가 아닌 경우에는 유튜브 등 제한적인 사이트에만 허용이 된다 였으나 정확히 어느 사이트가 허용되어있는지 알려지지 않고 화이트리스트 도메인을 추가할 방법을 몰라서 필요한 경우에도 사용이 힘들다는 문제가 있었다.
그러던 중 XE 공식 홈페이지의 팁 게시판에 포럼 모듈 인용글 박스가 지워지는 문제를 해결한 글(http://www.xpressengine.com/tip/21816082)을 보았는데 이곳에서 iframe 등 HackTag를 제거하는 코드를 수정하는 부분을 발견했다. 여기서 착안해서 해당 함수를 찾아보니 해결 방법을 찾게 되었다.
일단 관리자 계정이 아니라면 removeHackTag 함수를 이용해 iframe 등의 태그 내의 src 등의 부분을 제거하게 되어 있고 removeHackTag 함수는 /config/func.inc.php에 위치한다.
removeHackTag 함수는 다시 /classes/security/EmbedFilter.class.php 이 파일에서 checkIframeTag 함수를 불러와 화이트 리스트에 있는 도메인인지를 확인하여 iframe 등의 태그를 그대로 내보낼지를 결정하고 이 화이트 리스트를 정의해 놓은 파일은 /classes/security/conf/embedWhiteUrl.xml에 위치하고 있다. (캐시파일은 /files/cache/embedfilter/embedWhiteUrl.php)
따라서 /classes/security/conf/embedWhiteUrl.xml 파일을 열어보면 화이트리스트 도메인을 확인할 수 있고
<domain name="http://(도메인)" desc="(설명)">
<pattern>(html, mms 등 주소)</pattern>
</domain>
형태로 iframe 등의 태그를 허용하는 화이트리스트 도메인을 추가할 수 있다. embed, object, param 태그 역시 동일하다.
이를 모듈이나 애드온 형태로 제작해서 더 간단하게 관리 페이지를 통해 확인/추가할 수 있게 하면 더 좋지 않을까 싶다. (혹은 코어 자체에서 지원한다던가)