묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
특정 사용자 글쓰기시 자바스크립트 허용의 문제
2011.09.24 04:26
기본적으로 XE에서는 관리자 이외의 사용자는 글쓰기시에 자바스크립트를 사용하지 못한다고 알고 있습니다.
실제로 테스트를 통해 일반 사용자가 본문에 다음 아래와 같은
<script type="text/javascript">
alert("Hello.");
</script>
<input type="button" onClick="test();" />
라는 간단한 스크립트 문장을 html편집모드를 사용하여 끼워넣 버리면 < >는 < >인 html 엔티티로 변경되 버리고, input 태그의onClick="test();" 이라는 자바스크립트 이벤트의 경우는 완전히 제거 되어버린다는 것을 알 수 있습니다.
혹시나 해서 관리자페이지에서 해당 게시판의 추가설정부분에서 HTML 편집권한을 특정 그룹에 지정해 봤는데 말 그대로 HTML만 해당 되는 사항이지 자바스크립트 허용 쪽이랑은 관계 없는 부분이었습니다.
이걸 자유도를 조금 높여서 관리자 말고도 특별히 지정된 그룹이라든지 지정된 사람에게는 본문 내에 글쓰기시 자바스크립트 사용을 허용하고 싶은데요....
문제는!! 관리자 일 때와 일반 사용자 일 때를 구분하여 만일 일반 사용자라면 자바스크립트를 쓴 부분을 어느 파일에서 인식해서 걷어내 버리는지 알 수가 없네요. 보드모듈 쪽이나 에디터모듈 쪽을 살펴봐도 찾지를 못하겠습니다.
혹시 아시는 분계신가요?
태그 연관 글
- [2017/01/01] 묻고답하기 확장변수로 받아온 것을 자바스크립트에서 문자로 사용하기 *2
- [2016/10/02] 묻고답하기 글쓰기 하면 정상적으로 등록이 되는데 목록으로 안가집니다. *1
- [2016/08/31] 묻고답하기 xe 에디터 비 활성화 질문입니다. *2
- [2016/07/27] 묻고답하기 페이지이동 스크립트 문의드려요.+ 홈페이지 꾸미는 문의
- [2016/05/20] 묻고답하기 Node.JS html로의 데이터 전송 여부 질문입니다.
댓글 1
-
송동우
2011.09.24 06:18
-
noDelete
2011.09.24 07:56
일단 답변 감사드리고요. 예시로 넣은 스크립트 구문이고 말그대로 예시일뿐 저 스크립트문을 쓴다는게 아니였습니다. 저런 hello 찍자고 일반사용자에게 허용하고자 하는건 아니라.. ^^ 힌트 주신대로 테스트해 보겠습니다. 감사합니다.
xe - config - func.inc.php 열고
line 652 쯤에
$content = preg_replace('/<(\/?)(iframe|script|meta|style|applet|link|base|html|body)/is', '<$1$2', $content);
여기서 붉은 색 부분을 삭제하면 누구나 스크립트를 사용할 수 있습니다.
이것을 힌트로 해서 원하는 대로 필터링을 하면 원하는 결과를 얻을 수 있을 겁니다.
참고로
<script type="text/javascript">
alert("Hello.");
</script>
<input type="button" onClick="test();" />
이렇게 하면 글을 읽기 위해 리스트를 클릭하면 hello 경고창이 뜨면서 글이 열립니다.
<script type="text/javascript">
function test() {
alert("Hello.");
}
</script>
<input type="button" onClick="test();" />
이렇게 붉은 색 부분을 추가해야 할 겁니다.
onClick 부분 사라지는 것은
바로 밑에
$content = preg_replace_callback
이 부분을 주석처리하고 테스트 해 보세요