htmlpurifer 쓰고싶지않습니다 가장간단하게 초짜가 할수있는방법이 뭐가있슬까요?
본문
어제 질문올렸는데요
전 video 소스랑 iframe소스 그냥 편안하게 쓰고싶습니다
그런데 질문올린것에대해서 회원님들꼐서 답변을 해주셨는데
결론은 htmlpurifer때문이란거 때문에 문제가 생긴거란거 알게되였고요
그런데 htmlpurifer 안쓰는법이라고
https://sir.kr/qa/171202 이렇게해봐도
안됩니다
그리고 나머지 팁이라고 나온것들보면 제가 머리가나빠서인지 이해가안되서요
htmlpurifer 쓰고싶지않습니다 가장간단하게 초짜가 할수있는방법이 뭐가있슬까요?
---------------------
밑엔 제가 어제 질문내용이고요 참고로 올립니다
밑의 video태크 예를들어 있다치면요지금현재 밑의 video소스 안보입니다
그런데 지금현재 src=" " 이부분을< iframe src="http://techslides.com/demos/sample-videos/small.mp4">
로 바꿈 보여지고요
지금 현재 안보이는 밑의 video 태그 동영상 보이게 나오게 하렴 어떻게해야해요?
iframe src로 바꿔야만 쓸수있나요?
!-->소스코드 <video autoplay="" loop="" controls="" muted=""> <source src="http://techslides.com/demos/sample-videos/small.mp4" type="video/mp4"> </video>
답변 6
보안이고 뭐고 신경 안쓰고 가장 간단한 방법은
사용하는 스킨에서
view.skin.php 파일에 있는
$view['content'] 부분을 $view['wr_content']로 변경하는 방법입니다.
최신버전 기준으로
bbs/view.php
117번째줄 부분에
$view['content'] = conv_content($view['wr_content'], $html);
코드가 있습니다.
$view['content'] = conv_content($view['wr_content'], $html,false);
로 교체하시면됩니다.
wr_content 부분이 아니라
여분 필드를 활용해보셧나요?
wr_1 ~ wr_10 까지 기본 셋팅이 되어 잇기 때문에 여분필드에 저장하고
불러오시면 정상 출력이 되실거에요
wr_content는 그누보드 핵심 소스까지 빼야 하는 상황이 있을 수 있으니
여분필드를 활용해보시기 바랍니다.
// view.skin.php 하단 삽입
<script>
if ($('#bo_v_con').html().indexOf('video') > -1 || $('#bo_v_con').html().indexOf('iframe') > -1) {
var div = document.createElement('div');
$(div).html($('#bo_v_con').html().replace(/ /g ,' ') );
$('#bo_v_con').html($(div).text());
}
</script>
common.lib.php 파일에 보시면
html_purifier 함수가 있습니다.
htmlpurifier 적용이 전부 위의 함수를 거치기 때문에,
return $html;
하면 내용을 필터링 하지 않고, 그대로 리턴하게 됩니다.
htmlpurifier 을 안쓰면 보안에 취약해 지니,
조건을 주어서 일정 회원들의 글에만 필터링 하지 않는 것으로 하면 될것 같네요.
function html_purifier($html)
{
global $write;
if( isset($write['mb_id']) && ('회원아이디' == $write['mb_id']) ){
return $html;
}
$f = file(G5_PLUGIN_PATH.'/htmlpurifier/safeiframe.txt');
$domains = array();
...
도메인/plugin/htmlpurifier 폴더를 htmlpurifier2 처럼 폴더명 변경해 보세요.
잘 되는지는 테스트를 못해봤어용.