전체 글
-
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를 사용해 암호를 해시하..
-
Authentication 구축하기Project/트윗 클론코딩 2023. 9. 30. 19:27
크게 Auth에 관한 내용을 처리할 때 쿠키&세션을 활용하는 방법과 JWT를 사용하는 방법이 있다. 이 둘엔 장단점과 차이점이 있는데 이에 관한 포스팅은 전에 올린 적이 있으니 아래 글에서 확인하면 좋을 것같다. 우리 트윗 클론코딩은 브라우저만 상대하는 게 아닌 여러 클라이언트를 상대하는 RESTful API를 사용하고 세션의 정보를 얻기 위해 하나의 db에 접속할 필요가 없고 확장성을 확보하기 위해 JWT를 사용하도록 결정했다. 요청 메소드 req res 비고 /auth/signin POST {id : text, pw : text} {jwt : jwt, username : text} / 200 /auth/signup POST {id :text, pw : text, username : text, name..