본문 바로가기
728x90
반응형

분류 전체보기217

JWT에서 Refresh Token은 어떻게 넘겨주나? JWT에서 Refresh Token을 전달하는 방식은 구현 목적, 보안 요구 사항, 클라이언트-서버 간 통신 방식에 따라 다양합니다. 일반적으로 두 가지 주요 방식이 사용됩니다:1. HTTP-Only Cookie로 전달이 방법은 가장 안전한 방법 중 하나로, Refresh Token을 HTTP-Only 쿠키에 저장하고, 클라이언트가 자동으로 서버로 전송하도록 설정합니다.장점:XSS(Cross-Site Scripting) 공격에 안전합니다.브라우저가 자동으로 쿠키를 관리하므로 클라이언트 코드에서 Refresh Token을 다룰 필요가 없습니다.구현 예시:(1) 서버에서 쿠키 설정:res.cookie('refreshToken', token, { httpOnly: true, // JavaScript로 접.. 2024. 12. 26.
HTTPS 통신에서 데이터가 탈취될 수 있을까? 실제 사례와 대응 방안 "HTTPS는 안전하니까 걱정할 필요 없다"는 이야기를 많이 들어보셨을 겁니다. 하지만 현실은 조금 다릅니다. HTTPS는 데이터를 암호화해 전송 중 탈취를 방지하는 중요한 기술이지만, 약점이 없는 건 아닙니다. 이번 글에서는 HTTPS 통신에서 데이터가 실제로 탈취된 사례와 이를 예방하기 위한 방법을 살펴보겠습니다.HTTPS는 왜 안전하다고 말할까?HTTPS(HTTP Secure)는 HTTP 프로토콜에 TLS(Transport Layer Security)를 결합해 보안을 강화한 통신 방식입니다. 이를 통해 데이터를 암호화하고, 서버의 신원을 검증하며, 데이터가 변조되지 않았음을 보장합니다. 이러한 강력한 보호 덕분에 HTTPS는 현재 가장 신뢰받는 웹 통신 방식으로 자리 잡았습니다.그렇다면, HTTPS.. 2024. 12. 23.
JWT 에서 토큰을 전달할때 Header의 Authorizaion 을 사용해야만 하는가? 아닙니다. JWT 토큰을 전달할 때 꼭 HTTP Header의 Authorization 헤더를 사용해야 하는 것은 아닙니다. Authorization 헤더는 가장 일반적이고 권장되는 방법 중 하나일 뿐입니다. 다른 방법도 상황에 따라 적절히 사용할 수 있습니다. 아래에서 각 방법과 장단점을 설명합니다.1. Authorization 헤더 사용 (권장)JWT를 전달할 때, 아래와 같이 Authorization 헤더에 Bearer 토큰으로 포함하는 방법이 일반적입니다.Authorization: Bearer 장점표준화: 대부분의 인증 라이브러리와 프레임워크에서 기본적으로 지원.보안: 토큰이 헤더에 포함되므로 민감한 데이터와 혼합되지 않음.캐싱 방지: HTTP 캐시 메커니즘에 의해 민감한 데이터가 캐시되는 문제를.. 2024. 12. 23.
(Java) Javalin : DB(MySQL) 붙여보기 이번에는 fastify 프레임워크에 MySQL 을 붙여서 동작시켜보자. https://gauryan.tistory.com/241 을 참고하여 MySQL을 설치하기 바랍니다. 이제, mysql 을 이용해서 DB 서버에 접속해보자. mysql -u root -p 라고 입력하고, 비밀번호(test123)까지 입력해보자.일단 새로운 User를 하나 생성해봅시다.-- CREATE USER '아이디'@'%' IDENTIFIED BY '비밀번호';CREATE USER 'test_user'@'%' IDENTIFIED BY 'test123';자... 그러면... 이제 Database 를 생성해봅시다.-- CREATE DATABASE 디비이름;CREATE DATABASE test_db;test_user 가 test_db .. 2024. 12. 13.
fastify (3) : DB(MySQL) 붙여보기 이번에는 fastify 프레임워크에 MySQL 을 붙여서 동작시켜보자. https://gauryan.tistory.com/241 을 참고하여 MySQL을 설치하기 바랍니다. 이제, mysql 을 이용해서 DB 서버에 접속해보자. mysql -u root -p 라고 입력하고, 비밀번호(test123)까지 입력해보자.일단 새로운 User를 하나 생성해봅시다.-- CREATE USER '아이디'@'%' IDENTIFIED BY '비밀번호';CREATE USER 'test_user'@'%' IDENTIFIED BY 'test123';자... 그러면... 이제 Database 를 생성해봅시다.-- CREATE DATABASE 디비이름;CREATE DATABASE test_db;test_user 가 test_db .. 2024. 12. 10.
fastify (2) : 컨트롤러 확장 앞에서 간단하게 fastify 프로그램을 만들어보았는데,  이대로 작성을 하면, API가 늘어날 수록 main.js 파일 점점 내용이 많아지고 커질거에요. 그러면, 코드 유지보수에 문제가 있으니, API들을 분류를 해서 분리할 필요가 있습니다. 보통 컨트롤러(controller)라는 이름으로 분리를 합니다.  기존에 작성했던 코드에서 /test1 API가 이었는데, 이것을 별도의 컨트롤러로 분리를 해봅시다. C:\work\fapi 폴더 아래에 controller 폴더를 만듭니다.그리고, test1.js 도 만들어줍니다.// controller/test1.jsexport async function test1 (fastify, options) { fastify.get('/test1', async fun.. 2024. 12. 6.
728x90
반응형