[개인 프로젝트] SJBoard (댓글 및 파일 업로드 게시판) 16일차 개발 일지
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