본문 바로가기

항해 99

(151)
대댓글 기능 구현 필요 사항 댓글 저장 시 필요한 내용 제목(타이틀) 댓글 내용 부모 댓글 ID(부모 댓글이 없을 경우 - 최상위 댓글 Null) 작성자 ID(유저 ID) 게시글 ID 댓글 삭제 시 필요한 내용 댓글 ID 부모 댓글 ID(대댓글 일 경우에) 자식 댓글이 있다면 삭제 상태만 변경(부모 댓글 내용을 "삭제된 댓글입니다." 등으로 표시) 삭제 상태인 부모 댓글은 속해 있는 자식 댓글이 없을 경우 삭제(부모 댓글 삭제 상태가 True이고 해당 부모 댓글에 속한 자식 댓글이 모두 삭제 되면 부모 댓글도 DB에서 삭제) 댓글에 대한 대댓글 기능 구현 시 설계 접근 방식 1. 자기 참조를 사용한 엔티티 설계 댓글 엔티티를 자기 자신을 참조하도록 설계하여, 각 댓글이 부모 댓글을 가리킬 수 있도록 합니다. 이 방식은 하..
S3를 이용한 파일 업로드 AWS S3 AWS Simple Storeage Service의 줄임말로 파일 서버의 역할을 하는 서비스 프로젝트 개발 중 파일을 저장하고 불러오는 작업이 필요한 경우에 프로젝트 내부 폴더에 저장할 수 있지만, AWS S3를 사용하여 파일을 관리할 수도 있음 AWS S3의 장점 무제한 용량(하나의 파일에 대한 용량 제한은 있지만, 전체 용량은 무제한) 파일 저장에 최적화 (개발자가 따로 용량을 추가하거나 성능을 높이는 작업을 하지 않아도 됨) 99.999%라는 높은 내구도(파일이 유실될 가능성이 낮음) 이 외에도 저렴한 비용, 높은 객체 가용성, 뛰어난 보안성 등의 장점이 있음 AWS S3 생성 객체(Object) : 파일과 파일정보로 구성된 저장단위로 파일이라 생각하면 됨 버킷(Bucket) : 저장된..
CORS 에러 해결 방법, CORS 보안 취약점 예방 가이드 1. Chrome 확장 프로그램 이용 Chrome에서는 CORS 문제를 해결하기 위한 확장 프로그램을 제공해준다. 링크에서 'Allow CORS: Access-Control-Allow-Origin' 크롬 확장 프로그램을 설치 해준다. 브라우저 오른쪽 상단에서 확장 프로그램을 활성화 시킬 수 있다, 해당 프로그램을 활성화 시키게 되면, 로컬(localhost) 환경에서 API를 테스트 시, CORS 문제를 해결할 수 있음 2. 프록시 사이트 이용하기 프록시(Proxy)란 클라이언트와 서버 사이의 중계 대리점을 뜻함, 프론트에서 직접 서버에 리소스를 요청했더니 서버에서 따로 설정을 안해줘서 CORS 에러가 뜨면, 모든 출처를 허용한 서버 대리점을 통해 요청하면 되는 것 무료 프록시 서버 대여 서비스들은 모두..
CORS CORS(Cross-Origin Resource Sharing) 교차 출저 리소스 공유 정책, 교차 출처라는 것은 (엇갈린) 다른 출처를 의미 출처(Origin) 어떤 사이트를 접속할 때 인터넷 주소창에 URL이라는 문자열을 통해 접근, URL은 다음과 같은 구성 요소로 이루어짐 Protocol(Schema) : http, https Host : 사이트 도메인 Port : 포트 번호 Path : 사이트 내부 경로 Query string : 요청의 key와 value값 Fragment : 해시 태그 출처(Origin)라는 것은 Protocol과 Host 그리고 Port까지 모두 합친 URL을 의미함 동일 출처 정책(SOP, Same-Origin Policy) SOP 정책은 동일한 출처에 대한 정책을 말함,..
WIL-6 Fact : 이번주 있었던 일, 내가 한 일 월 : Spring 3차 테스트, 스프링 과제 AWS 배포 화 : 팀프로젝트 SA, 와이어 프레임, API 명세 작성, 팀 Git Repository 생성 수 : 유저 회원가입, 로그인 기능, 선택지에 대한 좋아요, 댓글에 대한 좋아요 기능 개발 목 : 개발 기능 테스트, 유저 로그아웃 기능 개발 금 : Refresh Token, Access Token 관리 기능 개발, 통합 테스트 토 : AWS HTTPS 배포 설정, 백엔드 버그 수정 Feeling : 나의 감정적인 반응, 느낌 프론트엔드와 처음으로 협업하는 프로젝트여서 서로 아는 부분이 달라 소통에서 어려움을 겪었음 API 설계 시 MVP 설정을 제대로 하지 않아 기능 개발 중 어려움을 겪었음 CORS, ..
AWS로 HTTPS 연결 EC2로 HTTPS 연결 개요 HTTPS는 SSL이라는 보안 프로토콜 위에서 HTTP 통신을 하는 프로토콜을 뜻함(최근에는 발전된 TLS 사용). 사전 필요사항 EC2 인스턴스 개설 실행 가능한 웹 서버 도메인 구매 특정 IP에 부여된 naver.com, google.com과 같은 주소들을 도메인이라고 하며, https 연결을 위해서는 도메인 주소를 소유하고 있어야 한다. '가비아' 1. 가비아에 접속 2. 사용을 원하는 도메인 명을 검색 3. 도메인 별 1년 가격이 나옴(Event 가격은 최초 1년만 적용됨), 기간이 지나고 연장하지 않을 경우 자동으로 삭제 됨 4. 등록 기간 설정 후 필수 정보 입력 후 결제 5. My가비아 → 이용 중인 서비스 → 도메인 메뉴에서 구입한 도메인 확인 가능 Route..
LogBack을 통한 로그 관리 로깅을 하는 이유 로깅 : 시스템이 동작할 때 시스템의 상태 및 동작 정보를 시간 경과에 따라 기록하는 것을 의미한다. 로깅을 통해 할 수 있는 것 개발 과정 혹은 개발 후에 발생할 수 있는 예상치 못한 애플리케이션 문제를 진단할 수 있다 다양한 정보를 수집할 수 있다 사용자 로그의 경우 분석 데이터로도 활용할 수 있다 Reference https://tecoble.techcourse.co.kr/post/2021-08-07-logback-tutorial/ 로거 선택 기준 가장 많이 사용되는 로거 Logback java.tuil.logging Log4j2 Log Back의 성능이 전반적으로 가장 탁월하기 때문에 대체로 LogBack을 선택했다. Log Back이란? Slf4j의 구현체로 Spring Boo..
Jwt Access Token과 Refresh Token Refresh token의 필요성 Access Token만을 통한 인증 방식의 문제는 제 3자에게 탈취당할 경우 보안에 취약하다는 점임. 엑세스 토큰은 발급 된 이후, 서버에 저장되지 않고 토큰 자체로 검증을 하며 사용자 권한을 인증하기 때문에, 엑세스 토큰이 탈취되면 토큰이 만료되기 전까지, 토큰을 획득한 사람은 누구나 권한 접근이 가능해짐 JWT는 발급한 후 삭제가 불가능하기 때문에, 접근에 관여하는 토큰에 유효시간을 부여하는 식으로 탈취 문제에 대해 대응해야 함 토큰의 유효기간을 짧게하면 토큰 남용을 방지하는 것의 해결책이 될 수 있지만, 유효기간이 짧은 토큰의 경우 그만큼 사용자는 로그인을 자주해서 새롭게 Token을 발급받아야 하므로 불편하다는 단점이 있음. 유효기간을 짧게 하면서 위의 문제를 ..