xe 태그 입력란에 스크립트 입력 못하게 막으려면 어떻게 해야하나요? xelover 2016.05.22 20:37 305 0 21 xe 태그(tag) 입력란에 스크립트 입력 못하게 막으려면 어떻게 해야하나요? 스케치북입니다.
관리자화면 "시스템 설정" 클릭시 오류 발생 후 해결. Attempt to assign property "site_srl" on array" in modules/module/module.model.php on line 157 hatali 25.12.26 0 3
댓글 21
단지 해당 스크립트에 대해서 HTML으로 실행하지 못하도록만 보안이슈 적용되어잇는 상태입니다.
태그란에 스크립트를 입력시 html으로 실행이 되는 상황입니다.
만약 태그를 나타내는 변수가 $tags라면 템플릿 문법으로는 {htmlspecialchars($tags)} 로 입력하실 수 있습니다.
이미 최신 버전의 스케치북에서는 전부 미솔님이 적어주신대로 처리되어 있는 상태인것 같은데요?
{@ $tag_list=$oDocument->get('tag_list') }
<div cond="count($tag_list)" class="rd_t_f rd_tag css3pie clear">
<div class="bg_f_color border_color">TAG •</div>
<ul>
<!--@for($i=0;$i<count($tag_list);$i++)-->
{@ $tag=$tag_list[$i]; }
<li><a href="{getUrl('search_target','tag','search_keyword',$tag,'document_srl','')}">{htmlspecialchars($tag)}</a><span class="comma">,</span></li>
<!--@end-->
</ul>
</div>
1.6.3.0 버전 기준으로 write_form.html 파일이 아래처럼 되어 있던데, 혹시 이 부분도 체크해보셨나요?
<div class="tag itx_wrp">
<span class="itx_wrp">
<label for="tags">{$lang->tag} : {$lang->about_tag}</label>
<input type="text" name="tags" id="tags" value="{htmlspecialchars($oDocument->get('tags'))}" class="itx" />
</span>
</div>
modules/board/skins/sketchbook5/write_form.html 파일입니다.write_form.html
말씀하신것처럼 내용이 같은데.. 어떻게 고쳐줘야 할지 모르겠습니다..
<!--// 태그 --><divclass="tag itx_wrp"><spanclass="itx_wrp"><labelfor="tags">{$lang->tag} : {$lang->about_tag}</label><inputtype="text"name="tags"id="tags"value="{htmlspecialchars($oDocument->get('tags'))}" class="itx" /></span></div>이것을
<!--// Tag -->{@$tag_list=$oDocument->get('tag_list') }<div cond="count($tag_list)"class="rd_t_f rd_tag css3pie clear"><divclass="bg_f_color border_color">TAG •</div><ul><!--@for($i=0;$i<count($tag_list);$i++)-->{@$tag=$tag_list[$i]; }<li><a href="{getUrl('search_target','tag','search_keyword',$tag,'document_srl','')}">{htmlspecialchars($tag)}</a><spanclass="comma">,</span></li><!--@end--></ul></div>이것으로 통채로 바꿔주면 되나요..?
htmlspecialchars가 안 먹는다면, 아예 태그 입력 창에 특수기호 입력을 막을 수 있도록 별도의 스크립트를 적용해보시는 게 어떨까요.
관련 소스는 검색해보시면 많이 나올 겁니다.
아예 스크립트를 HTML으로 실행하지 못하도록 할 수는 없나요?
xe 최신버전에 있는 tag.controller.php 가 들어있는 /modules/tag 를 통째로 FTP 에서
현재 사용하고 있는 xe 1.7.3.7 /modules/tag 에 붙여넣기 해도 태그에 스크립트 삽입시.. 여전히 스크립트가 보입니다..
아직까지도 해결이 안되고 있어서요.. ㅠㅠ
function inputCheckSpecial(){
var strobj = document.all.special; //입력값을 담을변수.
re = /[~!@\#$%^&*\()\-=+_']/gi;
if(re.test(strobj.value)){
alert("특수문자는 입력하실수 없습니다.");
strobj.value=strobj.value.replace(re,"");
}
}
</script>
이걸 어디에 넣어주면 될까요?
document.all.special에서 special 대신에 tags를 넣어야겠구요.
<div class="tag itx_wrp">
<script>
function inputCheckSpecial(){
var strobj = document.all.tags; //입력값을 담을변수.
re = /[~!@\#$%^&*\()\-=+_']/gi;
if(re.test(strobj.value)){
alert("특수문자는 입력하실수 없습니다.");
strobj.value=strobj.value.replace(re,"");
}
}
</script>
<span class="itx_wrp">
<label for="tags">{$lang->tag} : {$lang->about_tag}</label>
<input type="text" name="tags" id="tags" value="{htmlspecialchars($oDocument->get('tags'))}" class="itx" />
</span>
</div>
첫번째입니다.
<div class="tag itx_wrp">
<span class="itx_wrp">
<label for="tags">{$lang->tag} : {$lang->about_tag}</label>
<input type="text" name="tags" id="tags" value="{htmlspecialchars($oDocument->get('tags'))}" class="itx" />
</span>
</div>
<script>
function inputCheckSpecial(){
var strobj = document.all.tags; //입력값을 담을변수.
re = /[~!@\#$%^&*\()\-=+_']/gi;
if(re.test(strobj.value)){
alert("특수문자는 입력하실수 없습니다.");
strobj.value=strobj.value.replace(re,"");
}
}
</script>
두번째입니다.
첫번째(div 안에 스크립트를 넣었습니다)와.. 두번째..(div 태그가 끝나는 바로 뒤에 넣었습니다)
어느것이 맞는건가요..?