xe 관련 질문 끌어올립니다..
조회수 4715 답변수 5 반응수 5 등록일 2016.06.03 17:33:13

태그 입력란에 스크립트 입력하면 작성한 스크립트가 작동 불가능하게 막으려면 어떻게 해야하나요?

코어 개조를 했기때문에 코어 업그레이드는 못해주고 있는 상황이며 xe 1.7.3.7 버전이고

태그란에 스크립트를 입력시 실행이 되는 상황입니다.

스케치북 1.6.3.6 버전입니다.

http://colorscripter.com/s/Xq0Rzft 이렇게 해도 안되고

http://colorscripter.com/s/R2Yw1af 이렇게 해도 안됩니다..

 

/modules/tag/tag.controller.php 원본은 아래 주소입니다.

http://colorscripter.com/s/kZ4SLh6 

filter나 ruleset으로 validation 을 추가 하는게 제일 좋은 방법이긴 하지만.. 많이 복잡하기에 간단히 스크립트 추가하는 방법으로 구현하였습니다. 룰셋을 추가하는 방법으로는 http://www.slideshare.net/flyskykr/xe-35073789 여기를 참조해 주세요. 아주 자세히 설명되어 있네요.


여기선 간단히 wirte_form에 태그값을 검증하는 스크립트를 추가함으로 해결합니다. 

좋은 방법은 아니에요. 


  1. #board/sketchbook5/write_form.html line 1

  2. <script>
  3. function validation_tags() {
  4.     var tags = document.getElementById("tags").value;
  5.     var pattern = new RegExp('^[\u3131-\u314e|\u314f-\u3163|\uac00-\ud7a3\,]*$');
  6.     if (!pattern.test(tags) && tags != "") {
  7.         alert('태그는 한글,콤마로만 입력 가능합니다.')
  8.         return false;
  9.     }
  10.     return true;
  11. }
  12. </script>

젤 상단에 위와 같이 script를 추가해 주세요.


  1. #board/sketchbook5/write_form.html line 18

  2. <form cond="!Mobile::isMobileCheckByAgent()" action="./" method="post" onsubmit="return (validation_tags() && procFilter(this, window.insert) )" class="bd_wrt bd_wrt_main clear">

form 태그를 위와 같이 변경합니다.


_write_form_mobile.html 모바일 파일도 위와 같이 젤상단에 스크립트 추가해 주시고 form 태그 변경해 주세요.



http://colorscripter.com/s/1fFX1QX

풀코드 공유 드립니다.


건투를 빌겠습니다. 아래는 결과물입니다.

채택도 해주세요~

2016.06.07 01:49:03 반응 이력
말씀대로 질문 새로 등록하였습니다! 안녕하세요 2016.06.07 06:00:11
alert를 안뜨게하려면 스크립트 코드 내 alert만 주석처라 하면 됩니다 글자 추가는 질문을 새로 등록해 주세요 Symfony 2016.06.07 03:22:48
알림창(alert)을 뜨지 않게하면서 한글,콤마 이외의것들을 등록시 등록 불가하게 하고, 태그 입력란에서 태그 : 쉼표를 이용하여 복수 등록 이것을 태그 : 쉼표를 이용하여 복수 등록 (한글, 콤마로만 입력 가능합니다) 이것으로 글자를 추가해주려면 어떻게 해야하나요? 안녕하세요 2016.06.07 02:33:58


말씀해 주신 버전으로 셋팅을 해서  태그를 등록해 보면 위와 같이 정상적으로 등록이 되어 집니다..

주신 정보만으로 문제를 해결하기엔 너무 제한적이고 어렵네요


혹시 코어를 수정하셨다고 했는데 태그 입력 부분을 수정하신건지..

전체 파일을 공유해 주신다면 해결하는데에 수월할 거 같아요..


2016.06.06 00:03:14 반응 이력
마지막 방법으로.. 태그 입력란에 스크립트 입력 방지 스크립트를 넣어보려고 하는데 어디에 위치 시켜야할지 잘몰라서.. 마지막으로 한번만 도와주셨으면 좋겠습니다. 스크립트 입력 방지는 , (쉼표) 를 제외하고 한글만 입력 가능하게 하고싶습니다. 안녕하세요 2016.06.06 22:26:31
기존에 작성된 태그들이 문제가 된다면 당연히 삭제를 해주는게 좋겠지요.. 이 문제는 안녕하세요님이 판단해서 삭제를 할지 안할지 결정하시면 될 것 같습니다. Symfony 2016.06.06 21:53:38
정말 정말 감사드립니다! 적용하기전에 그럼 기존에 작성된 태그들은 삭제 안해줘도 되나요? 안녕하세요 2016.06.06 20:34:29
board/sketchbook5/write_form.html line 48 &lt;!--// 태그 --&gt; &lt;!-- &lt;div class=&quot;tag itx_wrp&quot;&gt; &lt;span class=&quot;itx_wrp&quot;&gt; &lt;label for=&quot;tags&quot;&gt;{$lang-&gt;tag} : {$lang-&gt;about_tag}&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;tags&quot; id=&quot;tags&quot; value=&quot;{htmlspecialchars($oDocument-&gt;get('tags'))}&quot; class=&quot;itx&quot; /&gt; &lt;/span&gt; &lt;/div&gt; --&gt; 태그 필드 주석 처리 하시면 될듯합니다. 모바일은 board/sketchbook5/_write_form_mobile.html line 79 &lt;!-- &lt;div class=&quot;tag itx_wrp&quot;&gt; &lt;span class=&quot;itx_wrp&quot;&gt; &lt;label for=&quot;tags&quot;&gt;{$lang-&gt;tag} : {$lang-&gt;about_tag}&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;tags&quot; id=&quot;tags&quot; value=&quot;{htmlspecialchars($oDocument-&gt;get('tags'))}&quot; class=&quot;itx&quot; /&gt; &lt;/span&gt; &lt;/div&gt; --&gt; Symfony 2016.06.06 13:31:54
그냥 태그를 없애버리려고 합니다. pc 그리고 모바일에서 태그 입력란을 전부 없애주려면 어떻게 해야하나요? 안녕하세요 2016.06.06 00:52:10

이상하네요..

xe1.7.3.7, 스캐치북 레이아웃 1.6.3.6, 스케치북 게시판 스킨 1.6.2.16 버전으로 셋팅해서 

태그를 등록해 보면 스크립트가 출력되지 않는데요...


스케치북의 모듈을 수정해 보도록 하죠...

같은 버전이라도 코드가 다를 수 있으니..

  1. #modules/board/skins/sketchbook/_read.html  line 173
  2. <li><a href="{getUrl('search_target','tag','search_keyword',$tag,'document_srl','')}">{htmlspecialchars($tag)}</a><span class="comma">,</span></li>


http://colorscripter.com/s/92g64G9 // 이건 _read.html 파일의 풀코드입니다.


이걸로도 안되신다면 

_read.html 코드만이라도 올려주세요

아니면 모든 xe 파일들을 올려주시면 좋구요


2016.06.05 01:32:51 반응 이력
http://www.imagebam.com/image/f7d6ca487785868 http://www.imagebam.com/image/8ea469487785871 입니다. 정 방법이 없으면 pc, 모바일에서 태그 입력란을 그냥 없애보려고 합니다. 안녕하세요 2016.06.05 19:42:20
후.. 저 태그를 태그 입력 필드에 넣는다는 건가요?? 태그라는게 스케치북 게시판 폼의 아래에 있는 태그 필드를 말씀하신게 맞는건가요? 글 저장 누르기 전 입력값들 캡쳐해서 올려주세요 Symfony 2016.06.05 10:59:15
이 두개를 태그안에 입력하고 글 저장을 누르면 첫번째 같은 경우 홈페이지 좌측 상단에 http://i.imgur.com/jbrTTGv.gif 사진이 보이고, 두번째 같은 경우는 홈페이지 좌측 상단에 View post on imgur.com 라는 글이 뜹니다. 안녕하세요 2016.06.05 03:56:36
태그안에 스크립트 넣을때 &lt;a href=&quot;http://i.imgur.com/jbrTTGv.gif&quot;target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://i.imgur.com/jbrTTGv.gif&quot; alt=&quot;안녕하세요&quot; height=&quot;100&quot; width=&quot;100&quot;&gt;&lt;/a&gt; &lt;blockquote class=&quot;imgur-embed-pub&quot; lang=&quot;en&quot; data-id=&quot;OzByQ95&quot;&gt;&lt;a href=&quot;//imgur.com/OzByQ95&quot;&gt;View post on imgur.com&lt;/a&gt;&lt;/blockquote&gt;&lt;script async src=&quot;//s.imgur.com/min/embed.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt; 이거로 넣어주시겠어요? 전 이 두개로 테스트 해보거든요... 안녕하세요 2016.06.05 03:54:06
modules/board/skins/sketchbook/_read.html 파일입니다. http://colorscripter.com/s/8xLTNZ6 173번째 줄을 보면 &lt;li&gt;&lt;a href=&quot;{getUrl('search_target','tag','search_keyword',$tag,'document_srl','')}&quot;&gt;{htmlspecialchars($tag)}&lt;/a&gt;&lt;span class=&quot;comma&quot;&gt;,&lt;/span&gt;&lt;/li&gt; 위 코드와 동일합니다. 안녕하세요 2016.06.05 03:51:29
  1. #line 42
  2. function triggerInsertTag(&$obj)
  3.     {
  4.         $module_srl = $obj->module_srl;
  5.         $document_srl = $obj->document_srl;
  6.         $tags = htmlspecialchars($obj->tags);
  7.         if(!$document_srl) return new Object();
  8.         // Remove all tags that article
  9.         $output = $this->triggerDeleteTag($obj);
  10.         if(!$output->toBool()) return $output;
  11.         // Re-enter the tag
  12.         $args = new stdClass();
  13.         $args->module_srl = $module_srl;
  14.         $args->document_srl = $document_srl;
  15.         $tag_list = explode(',',$tags);
  16.         $tag_count = count($tag_list);
  17.         for($i=0;$i<$tag_count;$i++)
  18.         {
  19.             unset($args->tag);
  20.             $args->tag = trim($tag_list[$i]);
  21.             if(!$args->tag) continue;
  22.             $output = executeQuery('tag.insertTag', $args);
  23.             if(!$output->toBool()) return $output;
  24.         }
  25.         return new Object();
  26.     }

위의 걸로 다시 해보세요

http://colorscripter.com/s/USmHm8O

특수 문자를 html 엔티티로 변환하는 함수 입니다.

데이터 베이스 접근 가능하신가요??



2016.06.03 18:32:05 반응 이력
어떤 소스코드 말씀이신건가요? 안녕하세요 2016.06.04 23:56:25
소스코드 공유 가능하신가요? Symfony 2016.06.04 11:58:09
네.. 새로 insert 한 태그들에 대해서도 스크립트가 나오는 상황입니다.. 안녕하세요 2016.06.04 11:46:12
위 코드는 xe 소스를 수정하는 것으로 스케치북의 모듈과는 무관합니다. 기존에 insert 되었던 값들은 HTML 엔티티로 변환되어 있지 않기 떄문에 당연히 스크립트로 실행이 될 것이구요. 새로 insert 된 태그들에 대해서도 계속 스크립트가 나오는 상황인가요?? 새로 insert된 태그들에 대해서도 같은 문제가 발생하는지 해주시구요.. 기존에 들어간 데이터들은 DB에서 직접 치환해주어야 할 것 같네요 우선 새로 insert되는 태그들도 같은 현상인지 확인해 주세요 Symfony 2016.06.04 08:45:45
xe 최신버전에 있는 tag.controller.php 가 들어있는 /modules/tag 를 통째로 FTP 에서 현재 사용하고 있는 xe 1.7.3.7 /modules/tag 에 붙여넣기 해도 여전히 스크립트가 보입니다.. 안녕하세요 2016.06.04 07:44:20
아 그리고 제가 깜빡잊고 말씀못드린것이 있는데요.. 사용하고 있는 스케치북 레이아웃은 1.6.3.6 버전(최신버전)이며, 사용하고 있는 스케치북 게시판 스킨은 1.6.2.16 버전입니다. (최신버전은 1.7.0 ) 스케치북 게시판 스킨은 1.6.2.16 버전 https://www.xpressengine.com/index.php?mid=download&amp;package_id=19555903&amp;release_id=21378448 게시판 스킨 역시 개조를 했기때문에 업데이트는 불가합니다.... 2016.06.04 07:04:28
xe_tags 태그에 마지막에 insert된 데이터를 어떻게 보는지 모르겠습니다 우선 xe_tags 테이블에 접근한 상태이며, 보이는것은 보기 구조 검색 삽입 비우기 삭제 이렇게 되있습니다. 2016.06.04 05:14:48
http://colorscripter.com/s/USmHm8O 이 코드로 되지않아서 말씀하신대로 데이터베이스 접근해서 확인해보니 SQL 질의: SELECT * FROM `xe_tags` LIMIT 0 , 30 이렇게 되있습니다! 2016.06.04 05:02:01
네.. 위 코드로도 안된다면.. 데이터베이스에 입력된 태그 값이 실제 html 엔티티로 변환이 이루어졌는지 아닌지 확인해 보고 싶어서요.. 디비 접근하셔서 SELECT tag FROM xe_tags ORDER BY regdate DESC LIMIT 100 &lt;-- 요 쿼리 질의 가능 하신가요? 2016.06.03 20:24:19
관심감사드립니다! 우선해보고 말씀드리겠습니다! 정말감사합니다! 데이터베이스는 접근은 가능한데.. 뭐라고 적혀있는지도 모르고.. 잘못건드려서 다 날라갈까봐 겁이나서요.. 2016.06.03 19:32:53
위선 위의 코드로도 안되면 에러 메시지를 적어주세요 그리고 데이터베이스 접근가능하시면 xe_tags 태그에 마지막에 insert된 데이터도 보여주시구요. 2016.06.03 18:36:12

답변 작성

질문에 적합한 답변을 상세히 작성해 주시기 바랍니다.

답변이 찬성되면 태그평판 +2점이 적립, 반대되면 태그평판 -1점 차감됩니다.

답변이 채택되면 태그평판 +10점이 적립됩니다.

etc 게시판 정보
  • 2k
    질문수
  • 121
    아카이브수
  • 46
    채택수
  • 0
    멤버수
etc 질문 통계
최근 30일
답변율
0%
채택율
0%
전체
답변율
2%
채택율
2%
최근에 등록된 질문