서비스를 배포 하고 고객피드백을 구글폼 시트를 통해서 받았다.
피드백 받은 부분들을 기록하고, 개선하여 반영한 부분들을 정리하려고 한다.
https://hungry-snipe-f2e.notion.site/0790cc60a2794a0db2f1015ca6d2cf41
alert창이나 제출을 했음을 알리는 페이지로 이동해야한다고 생각했고, 따로 페이지를 만들기보다는 alert를 통해서 제출되었음을 알려주었다.
DB에서 게시글의 내용을 담는 Content(VARCAHR)컬럼의 크기를 작게 설정해놓았고, 크기를 크게 설정해놓았다.
Front단에서 따로 설정을 해주지 않아서, 게시글의 구성요소인 제목 / 가격/ 내용을 모두 작성하지 않아도 게시글이 등록되고있었다. front에서 확인하여 하나라도 작성하지 않으면 alert창을 띄어 표시해주었고 세 요소 모두 작성시에만 게시글이 등록되도록 설정했다.
모바일 화면에서 직접 촬영한 크기의 사진들은 고화질이기때문에, 사진파일의 크기가 크다. 해당 부분을 Spring boot와 S3에서 연동되는 설정값을 변경해주었다.
MySQL설정에서도 타임존 설정도 잘 되어있고, DB안에도 올바른 생성날짜와 시간이 들어가는데 페이지로 나타낼때가 9시간전의 시간이 출력되어있었다.
처음에는 작성자한테만 수정하기 버튼이 보이도록 설정을 해놓았는데, 수정하기 페이지에서 게시글의 id가 url에 노출되기때문에 이를 악용하여 다른사람의 글을 수정하는 경우가 생겼다.
그래서 수정하기 버튼이 작성자에만 보이도록 해놓고, 추가로 로그인하고있는 유저의 토큰값의 정보에서 userid와 게시글을 작성한 boardid값을 다시 한번 비교해서 같을 경우에만 수정이 가능하도록 설정했다.
텍스트가 입력되는 공간에 script사용을 따로 막아두지 않아서, 누군가 악의적으로 script 공격을 진행했고, 이에 충격을 받고서 scrpit단에서 <>/#$%와같은 기호들을 검사하고 있을 경우 치환하는 코드를 추가해주었다.
피드백을 받아보니, 내가 설계하고 생각한 시나리오대로 서비스를 이용하는 사람도 있지만, 그렇지 않고 다양한 방법으로 서비스를 이용하는 사람들이 많다는 것을 깨달았다. 그래서 생각하지 못한 부분에서 에러도 많이 발생하기 때문에 이런 에러에 대한 예외처리가 중요하고, 어떤 에러가 어디서 발견했는지를 확인할수있는 로그기록정리가 꼭 필요하다고 생각했다.
추가적으로 생각하지 못했던 다른사람의 게시글 수정과 XSS와 같은 보안적인 공격을 받아보니, 백엔드 개발자가 꼭 고려하고 생각해야하는 가장 중요한 요소중의 하나가 보안적인 요소임을 제대로 깨닫게 되었다. 프론트단에서와 서버단 두 곳에서의 보안적인 요소가 필요할 것 같다고 생각했다.