게시판에 아이프레임이 적용되게 하려면~ 정보
게시판에 아이프레임이 적용되게 하려면~본문
그누보드 게시판에 아이프레임이 적용되게 하고 싶습니다~
(전에 태국어 관련 질문을 올렸는데 해결할 방법을 몰라서ㅠㅠㅠㅠㅠ
태국어 내용을 html를 만들어 게시판에 아이프레임으로 불러올 수 있었으면 해서요)
열심히 검색해보았는데 이런 질문과 내용이 있더라구요.
-------------------------------------------------------------------------
lib/common.lib.php 파일에서
// 악성태그 변환
function bad_tag_convert($code)
{
return preg_replace("/\<([\/]?)(script|iframe)([^\>]*)\>/i", "<$1$2$3>", $code);
}
이 부분에서 어느 부분을 어떻게 고쳐야.. 게시판 내용에 아이프레임을 적용할 수 있나요?~
보안상 문제가 된다면 어느정도...로 위험한지.. 알려주세요...
***
script|iframe에서 iframe 삭제
또 일부 해당스킨에서는 write.skin에서도 태그막는 곳에서도 빼줘야 합니다.
보안상문제?
심각해 지지요... 눈에 뵈지도 않게 악성코드 심기 땡큐한 경우입니다.
운영자만 필요한 경우는
일반인은 막아놓고 운영자만 쓸수있게 해놓는 방법도 좋은 방법일듯합니다.
if ($is_admin == 'super') {
...
}
그룹 관리자까지 허가하려면...
if ($is_admin == 'super' || $is_admin = 'group') {
...
}
-------------------------------------------------------------------------------------
제가 원하는 질문과 답변인데 어떻게 수정해야될지 잘 모르겠어서
도움을 주십사 이렇게 글을 올립니다T_T
관리자와 그룹관리자만 아이프레임과 자바스크립트를 쓸수 있게 하고 싶은데요~
function bad_tag_convert($code)
{
return preg_replace("/\<([\/]?)(script|iframe)([^\>]*)\>/i", "<$1$2$3>", $code);
if ($is_admin == 'super' || $is_admin = 'group') {
...
}
}
요렇게 넣어줘야 되는 건가요? 기초도 몰라서 무작정 저렇게 해보니 오류만 뜹니다ㅠㅠㅠ
아시는 분이 계시다면 꼭 좀 가르쳐주세요T_T 부탁드립니다~
댓글 전체
function bad_tag_convert($code)
{
return preg_replace("/\<([\/]?)(script)([^\>]*)\>/i", "<$1$2$3>", $code);
}
}
이렇게 넣어 보세요.. 테스트는 안해봤어요 ㅡㅡ;
관리자도, 회원, 비회원도 모두 다 아이프레임을 사용할 수 있게 되어버리네요ㅠㅠㅠㅠㅠㅠ
다시한번 가르쳐주시면 안될까요?
아시는 분들 계시면 꼭 좀 답변 부탁드립니다ㅠㅠㅠㅠㅠㅠㅠㅠㅠ
2. lib/common.lib.php 파일 내에서 아래 함수를 찾아 아래 내용으로 바꾸어 버리세요.
서너군데 수정을 해야 하는데 초보라 하시니 그냥 모두 바꾸는 게 편할 듯 보입니다.
제가 사용하고 있는 것을 약간 수정했습니다.
아마 작동되리라 여겨지지만 안된다면 쪽지 다시 주세요...
function conv_content($content, $html)
{
global $config, $board, $member, $view;
if ($html)
{
$source = array();
$target = array();
$source[] = "//";
$target[] = "";
if ($html == 2) { // 자동 줄바꿈
$source[] = "/\n/";
$target[] = "<br/>";
}
/*
if ($board[bo_disable_tags])
{
//$source[] = "/(\<)([\/]?)($board[bo_disable_tags])/i";
// 태그에만 적용하던것을 속성(프로퍼티)에도 적용하도록 수정
$source[] = "/([\<]?)([\/]?)($board[bo_disable_tags])/i";
$target[] = "$1$2$3-x";
//$source[] = "/^/";
//$target[] = "<b>이 페이지는 사용금지 태그 사용으로 인하여 정상 출력되지 않을 수 있습니다.</b><p>";
}
*/
// 테이블 태그의 갯수를 세어 테이블이 깨지지 않도록 한다.
$table_begin_count = substr_count(strtolower($content), "<table");
$table_end_count = substr_count(strtolower($content), "</table");
for ($i=$table_end_count; $i<$table_begin_count; $i++)
{
$content .= "</table>";
}
$content = preg_replace($source, $target, $content);
$adm=is_admin($view[mb_id]);
if ($adm != 'super' && $adm != 'group') $content = bad_tag_convert($content);
// XSS (Cross Site Script) 막기
// 완벽한 XSS 방지는 없다.
// 081022 : CSRF 방지
//$content = preg_replace("/(on)(abort|blur|change|click|dblclick|dragdrop|error|focus|keydown|keypress|keyup|load|mousedown|mousemove|mouseout|mouseover|mouseup|mouseenter|mouseleave|move|reset|resize|select|submit|unload)/i", "$1<!-- XSS Filter -->$2", $content);
//$content = preg_replace("/(on)([^\=]+)/i", "on$2", $content);
if ($adm != 'super' && $adm != 'group') $content = preg_replace("/(on)([a-z]+)([^a-z]*)(\=)/i", "on$2$3$4", $content);
$content = preg_replace("/(dy)(nsrc)/i", "dy$2", $content);
$content = preg_replace("/(lo)(wsrc)/i", "lo$2", $content);
if ($adm != 'super' && $adm != 'group') $content = preg_replace("/(sc)(ript)/i", "sc$2", $content);
$content = preg_replace("/(ex)(pression)/i", "ex$2", $content);
/*
$content = preg_replace("/\#/", "#", $content);
$content = preg_replace("/\</", "<", $content);
$content = preg_replace("/\>/", ">", $content);
$content = preg_replace("/\(/", "(", $content);
$content = preg_replace("/\)/", ")", $content);
*/
}
else // text 이면
{
// & 처리 : & 등의 코드를 정상 출력함
$content = html_symbol($content);
// 공백 처리
//$content = preg_replace("/ /", " ", $content);
$content = str_replace(" ", " ", $content);
$content = str_replace("\n ", "\n ", $content);
$content = get_text($content, 1);
$content = url_auto_link($content);
}
return $content;
}
비회원, 회원, 관리자 모두 테스트해보았는데 딱 제가 원하는 대로 나옵니다ㅠㅠㅠㅠㅠㅠㅠ
제가 이해하기 쉽도록 편하고 자세히 가르쳐주셔서 단숨에 적용시킬 수 있었습니다ㅠㅠㅠㅠㅠㅠ
소중한 시간 내어주시며 도와주신 두손모아님께 다시한번 고개숙여 감사드립니다T_T
포인트가 더 있다면 전부 드리고 싶은데 너무 죄송해지네요ㅠㅠㅠ 정말 감사합니다! ^-^*