Project/트윗 클론코딩
-
트윗 클론코딩 SummaryProject/트윗 클론코딩 2023. 10. 30. 18:59
각종 다이어그램 API Document : https://app.swaggerhub.com/apis-docs/Doyun-Han/Dwitter_APIs/1.0.0#/ 총평 및 느낀 점 노드로 진행한 프로젝트였는데 공부하는 데 많은 도움이 됐다. 강의를 두 번 듣는거라 확실히 처음에 들었을 때보다 이해도도 높았고 실력도 향상된 느낌이다. 프론트, 머신러닝, 백엔드 여러 분야를 모두 공부하고 있는데 이게 전부 조금씩 도움이 되는 것 같다. 배포를 하면서 겪는 어려움과 비용에 대한 고민...그리고 보안설정까지 직접 해보지 않으면 이해하기 어려운 것들을 모두 해낼 수 있었다. 쉽지만은 않은 여정이였지만 그래도 막상 하고 나니 뿌듯하다. 가장 살갗에 와닿는 점은 백엔드에 필요한 코드 작성 및 설계 실력 향상 그리..
-
XSS와 CSRF에 대응하기Project/트윗 클론코딩 2023. 10. 23. 21:20
지금까지 작성한 코드는 JWT토큰을 이용해서 인증을 진행했다. XSS는 간단하게 말하면 스크립팅 공격이라고 할 수 있는데 우리가 개발자 도구로 읽을 수 있는 내용은 다른 해커들도 다 읽을 수 있기에 토큰에 대한 정보를 가려야한다. 이를 위해 우리는 Cookie를 생각할 수 있다 쿠키는 옵션을 설정하면 브라우저에서만 읽을 수 있으므로 노출시키지 않을 수 있다. 그러면 쿠키에다가 토큰에 대한 정보를 담아서 보내고 프론트쪽은 로컬스토리지에 토큰에 대한 정보를 저장하는 게 아니라 메모리상에 보관하여 XSS공격에 대응할 수 있다. function setToken(res, token) { const options = { maxAge: config.jwt.expiresInDays * 1000, httpOnly: tr..
-
Authentication 최종 정리Project/트윗 클론코딩 2023. 10. 2. 19:23
authentication에 관한 부분을 router, controller, data 부분으로 나눠서 정리했다. validation에서 중복적으로 쓰이는 코드를 하나로 빼서 재사용성을 높였고 authentication을 검증하는 미들웨어를 만들어서 tweet에 관한 동작들을 인증된 사용자가 아니면 제한하게끔 만들었다. 라우터 > 컨트롤러 > 데이터 순서인데 라우터부터 살펴보면 validate를 다루는 2개의 변수가 있는데 하나는 로그인 할 때 사용하는 username과 pw를 검사하는 변수이다 회원가입 할 때도 사용하는 녀석들이기에 이를 그대로 받아와서 signup하는 곳에 비구조화로 가져와서 그대로 썼다. 컨트롤러에는 토큰을 생성하고 보내주는 내용이 주를 이루고 있다 bcrypt를 사용해 암호를 해시하..