Q&A 제목 특수문자처리

This commit is contained in:
KNKIM 2021-12-09 11:51:09 +09:00
parent eb5a63c33d
commit 5338723ce2
6 changed files with 10 additions and 5 deletions

View File

@ -108,6 +108,8 @@ public class HTMLTagFilterRequestWrapper extends HttpServletRequestWrapper {
} }
private String getSafeParamData(String value) { private String getSafeParamData(String value) {
/*
StringBuffer strBuff = new StringBuffer(); StringBuffer strBuff = new StringBuffer();
for (int i = 0; i < value.length(); i++) { for (int i = 0; i < value.length(); i++) {
@ -143,6 +145,7 @@ public class HTMLTagFilterRequestWrapper extends HttpServletRequestWrapper {
} }
value = strBuff.toString(); value = strBuff.toString();
*/
// SQL INJECTION 취약점 보완 // SQL INJECTION 취약점 보완
value = value.replaceAll("\\s+[o|O][r|R]\\s+", " o-r "); value = value.replaceAll("\\s+[o|O][r|R]\\s+", " o-r ");

View File

@ -100,6 +100,9 @@ public class ArticleVO extends PagingVO {
public String getTitle() { public String getTitle() {
return title; return title;
} }
public String getUnescapeTitle() {
return StringEscapeUtils.unescapeHtml(title);
}
public void setTitle(String title) { public void setTitle(String title) {
this.title = StringUtil.getSafeParamData(title); this.title = StringUtil.getSafeParamData(title);
} }

View File

@ -314,7 +314,7 @@ function fn_downloadFile(attachFileId, fileSn) {
<li class="wt-title fl"> <li class="wt-title fl">
<div class="w-tit">제목</div> <div class="w-tit">제목</div>
<div class="w-form"> <div class="w-form">
<input type="text" name="title" id="title" title="제목" value="${searchArticle.title}" size="100" maxlength="200" class="grid-1" placeholder="제목을 입력하세요." required /> <input type="text" name="title" id="title" title="제목" value="${searchArticle.unescapeTitle}" size="100" maxlength="200" class="grid-1" placeholder="제목을 입력하세요." required />
</div> </div>
</li> </li>
<li class="wt-secret fl check"> <li class="wt-secret fl check">

View File

@ -152,7 +152,7 @@
var li = $('<tr class="tableTrData" />'); var li = $('<tr class="tableTrData" />');
li.append($('<td />').attr('class', 't-num').html(obj.rno)); li.append($('<td />').attr('class', 't-num').html(obj.rno));
li.append($('<td />').attr('class', 't-tit').html("<a href=\"javascript:void(0)\" onclick=\"fn_viewDetail('" + obj.articleId + "','" + obj.secretYn + "','" + obj.myQnaYn + "')\">" + li.append($('<td />').attr('class', 't-tit').html("<a href=\"javascript:void(0)\" onclick=\"fn_viewDetail('" + obj.articleId + "','" + obj.secretYn + "','" + obj.myQnaYn + "')\">" +
obj.title + obj.unescapeTitle +
(obj.secretYn == "Y" ? '<img src="/images/icon/icon-password.png" alt="자물쇠 아이콘">&nbsp;' : '') + (obj.secretYn == "Y" ? '<img src="/images/icon/icon-password.png" alt="자물쇠 아이콘">&nbsp;' : '') +
"</a>")); "</a>"));
li.append($('<td />').attr('class', 't-writer').html(obj.regNmSec)); li.append($('<td />').attr('class', 't-writer').html(obj.regNmSec));

View File

@ -115,7 +115,7 @@ function fn_downloadFile(attachFileId, fileSn) {
<span class="type"> <span class="type">
<c:if test='${article.answerYn == "Y"}'><span>답변완료</span></c:if> <c:if test='${article.answerYn == "Y"}'><span>답변완료</span></c:if>
</span> </span>
${article.title} ${article.unescapeTitle}
<span> <span>
<c:if test='${article.secretYn == "Y"}'> <c:if test='${article.secretYn == "Y"}'>
<img src="/images/icon/icon-secret.png" alt="자물쇠 아이콘"> <img src="/images/icon/icon-secret.png" alt="자물쇠 아이콘">

View File

@ -19,11 +19,10 @@
<filter-name>encodingFilter</filter-name> <filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern> <url-pattern>*.do</url-pattern>
</filter-mapping> </filter-mapping>
<filter> <filter>
<filter-name>HTMLTagFilter</filter-name> <filter-name>HTMLTagFilter</filter-name>
<filter-class>egovframework.com.cmm.filter.HTMLTagFilter</filter-class> <filter-class>egovframework.com.cmm.filter.HTMLTagFilter</filter-class>
<!-- <filter-class>egovframework.rte.ptl.mvc.filter.HTMLTagFilter</filter-class> --> <!-- <filter-class>egovframework.rte.ptl.mvc.filter.HTMLTagFilter</filter-class> -->
</filter> </filter>
<filter-mapping> <filter-mapping>
<filter-name>HTMLTagFilter</filter-name> <filter-name>HTMLTagFilter</filter-name>