[Problem] 실전 프로젝트의 끝이 보이기 시작했다....마지막으로 남겨 놓은 숙제.... HTTPS로 프론트 엔드와 백엔드를 연결하기. 연결하는 것은 별로 어렵지 않다. CORS설정만 잘해주고 서로 배포한 환경을 맞추면 된다. But, 우리 팀이 시도하고 있는 것은 HTTPS를 통해 쿠키 보안을 강화하는 것이다. [Try] 현재 백엔드가 배포한 환경은 아마존 Elastic Beanstalk, 가비아 도메인을 이용한 배포, 프론트엔드가 배포한 환경은 NAS, cloud flare를 이용한 배포였다. 여러 방법으로 시도를 했다. 1. 첫번째 시도는 NAS cloud flare의 프록시 서버와 NAS 인증서를 이용해 서버의 도메인을 프록시 서버와 연결하는 방법이었다. 인증서 승인이 됐지만 여전히 Set-..
같이 보면 좋은 글 2023.05.16 TIL - express에 multer 모듈을 이용해 image 업로드... [Problem] 첫 주특기 프로젝트. 현재 작업하고 있는 프로젝트는 요즘 유행하고 있는 카카오톡 오픈 채팅 '거지방'을 게시글로 올리는 형식으로 바꾸는 프로젝트이다. 거지방은 최근 고금리 고물가 yoonsoo-space.tistory.com [Problem] 실전 프로젝트에 추가 기능을 넣는 단계이다. 오늘의 문제는 추가 기능 중 하나인 프로필 수정 기능이다. 다른 프로젝트에서 사용하던 multer 라이브러리를 이용하여 서버에 이미지를 저장할 생각을 했다. But 서버에 이미지를 저장하는 것은 서버의 디스크 공간을 직접 사용하게 되기 때문에 데이터 관리가 복잡해질 수 있다. 또한 서버의 ..
[Problem] 토큰에서 사용되는 Bearer는 무엇이고 왜 사용하고 있는가? [Solution] Bearer? 인증 방식 중 하나로, HTTP 요청에 대한 인증 헤더에 사용되는 토큰 타입. 주로 웹 애플리케이션에서 API를 보호하고 인증하는 데 사용. 클라이언트는 인증을 위해 서버로부터 발급받은 액세스 토큰을 얻어서, 이를 Bearer 토큰으로 설정하고 HTTP 요처의 Authorization 헤더에 포함시킨다. 쿠키나 세션을 이용한 인증보더 더 보안성이 강하고 효율적인 인증 방법이다. ==> 쿠키 인증: 아이디나 암호와 같은 사용자 정보를 쿠이에 담아 서버로 보낸다. HTTP 방식의 통신을 사용할 경우 제 3자가 해당 정보를 염탐할 수 있다. ==> 세션 인증: 세션ID를 보내므로 쿠키에 비해 보안..
[Problem] JWT (JSON Web Token)을 header로 받는 이유에 대해서 생각해보자... [Solution] 기본적으로 JWT(JSON Web Token)은 웹 애플리케이션에서 사용자 인증과 권한 부여를 위해 널리 사용되는 토큰 기반 인증 방식이다. JWT는 정보를 안전하게 전송하기 위해 서명된 토큰을 사용하며, 주로 HTTP 요청의 헤더에 포함하여 전송된다. 물론 body같은 정보를 담을 수 있는 부분으로 넘겨도 괜찮다. 그러나 헤더에 포함해서 정보를 보내는 이유는 크게 3가지로 볼 수 있다. 보안: JWT는 서명되어 있기 때문에 토큰이 변조되었는지 확인할 수 있다. 서명을 확인하면 토큰이 유효하고 신뢰할 수 있는지 확인할 수 있다. 헤더에 포함된 서명은 토큰의 무결성을 보호하는 데 ..
[Problem] 첫 주특기 프로젝트. 현재 작업하고 있는 프로젝트는 요즘 유행하고 있는 카카오톡 오픈 채팅 '거지방'을 게시글로 올리는 형식으로 바꾸는 프로젝트이다. 거지방은 최근 고금리 고물가에 청년세대를 중심으로 극단적 절약을 하는 모습을 올리는 오픈 채팅 방이다. 프로젝트 명은 '왕초', 형태는 게시판이다. 게시글을 작성해서 post할 때 title, content, image를 올려야 하는데 이때 image를 파일 형태로 올릴 때 body로 받아서 올리는 것은 한계가 있다는 것을 깨달았다. 따라서 오늘의 문제점은 image를 정상적으로 구현이 가능하게 작업하는 것이다. [Try] sequelize를 이용하고 있기에 sequelize를 이용해서 image를 정상적으로 올릴 수 있는 형태가 무엇이 ..
[Problem] Lv 4 과제를 진행 중 게시글 좋아요 API를 구성할 때 생각해보니 db의 like 컬럼에 createdAt과 updatedAt이 필요없다 생각이 들었다. 불필요한 요소를 계속해서 저장해 많은 공간을 차지할 필요없다 생각했던 것이다. [Try] 처음에는 쉽게 생각해서 migrations의 create-likes.js부분과 models의 likes.js를 수정하면 될 거라 생각하여 두 파일의 createdAt과 updatedAt 부분을 삭제했다. 삭제 후 실행 결과.... error가 발생했다. 수정 전에는 정상적으로 작동했는데...createdAt과 updatedAt만 없앴는데 error가 발생한다. error에 대한 부분을 찾기 위해 catch (error) { // 예외 케이스에서..