개인프로젝트/[스프링] SJBoard 개발일지

[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 16일차 개발 일지

Seojoo21 2022. 3. 26. 23:52

2022.03.26.토요일 16일차 

 

오늘은 무료 게시판 에디터 중 하나인 SummerNote를 SJBoard에 적용하여 게시판 기능을 보완하였다.

그리고 관리자 페이지를 구현하기 위한 기본 설계 및 기초 작업을 하였다. 

 

1.  제작 과정 

- 스프링 프로젝트에 SummerNote 에디터 적용

https://seojoo21.tistory.com/163

 

[SJBoard] 기존 게시판 기능 보완 3: 썸머노트(SummerNote) 에디터 추가

다른 일반 웹사이트처럼 SJBoard에도 게시판 에디터 기능을 추가하였다. 유명한 무료 게시판 에디터로 네이버 스마트 에디터, CKEditor, SummerNote가 있는데 나는 SummerNote 에디터를 이용하였다. 도움

seojoo21.tistory.com

 

2. 발생 에러 및 해결 방법

- SummerNote 에디터 기능 추가 중 게시판 조회 페이지에서 에디터에서 쓴 글이 그대로 출력되지 않는 문제가 있었다.

아무리 검색해도 뚜렷한 방법을 찾지 못해 결국 오키에 질문을 올렸고 다행히 좋은 답변을 받아 문제를 해결하여 프로젝트에 SummerNote 기능을 추가하여 게시판 기능 보완 작업을 마무리 할 수 있었다. 

 

https://okky.kr/article/1187859?note=2727158 

 

OKKY | 스프링 프로젝트 섬머노트 게시판 조회 시 태그가 적용되지 않고 그대로 보입니다.

안녕하세요. 자바 백엔드 개발자가 되고 싶어  현재 독학으로 공부하며  개인 프로젝트로 기본적인 게시판 댓글 첨부파일 기능, 회원 가입 로그인 기능을 가진 기본적인 웹사이트 를 만들고 있

okky.kr

 

3.  오늘 프로젝트 진행하면서 추가로 배운 내용

1) JSP에서 값을 출력할 때 ${board.content} 라 쓰지 않고 <c:out value="${board.content}"/> 로 <c:out> 태그를 쓰는 이유는 보안에 강하기 때문이다. 만약 <c:out> 태그로 감싸지 않고 ${board.content}를 그대로 써버리면 XSS 공격에 취약하다.

 

 

XSS 공격은 웹사이트에 스크립트 코드를 주입시키는 방법으로 웹사이트 공격 방법 중 기초적인 것에 해당되는데 html코드를 해석하지 않게 만들면 간단히 방어할 수 있다.

 

즉, JSP view페이지를 만들 때 XSS공격 방지를 위해 <c:out> 을 사용하여 막을 수 있다.

 

하지만 나는 이번에 SummerNote 에디터를 추가하기 위해 결국 아래와 같이 게시물 조회 페이지에서 <c:out> 태그를 포기하고 말았다. 

도대체 <c:out> 태그를 쓰면서 에디터를 사용하려면 어떻게 해야할까? 

 

https://www.egovframe.go.kr/home/qainfo/qainfoRead.do?menuNo=69&qaId=QA_00000000000018207 

 

묻고 답하기 | 표준프레임워크 포털 eGovFrame

처리중입니다. 잠시만 기다려주십시오.

www.egovframe.go.kr

위의 글을 보면 escape 문자 또는 tag삭제는 utility api를 만들고 적절하게 controller단에서 DB저장 또는 model 반환 시 적용하는 것이 일반적이라고 하는데 말 뜻은 알겠다만 실제로 어떻게 구현해야하는 것인지 전혀 모르겠다. 실제 개발자들은 개발하고 있을까? 너무 궁금하다. 정말 갈 길이 멀구나...  

 

 

 

출처: https://2ham-s.tistory.com/274