CORS (Cross-Origin Resource Sharing)는 웹 페이지가 다른 도메인의 리소스에 액세스할 수 있게 해주는 메커니즘입니다. CORS는 HTTP 헤더를 사용하여 다른 도메인의 리소스에 액세스할 수 있는 권한을 부여합니다. 기본적으로 웹 보안 모델인 동일 출처 정책 (Same-Origin Policy)은 스크립트가 다른 도메인의 리소스에 접근하는 것을 제한하므로, CORS는 이를 완화하는 역할을 합니다. CORS는 주로 AJAX 요청, Fetch API 요청, 웹 폰트, WebGL 텍스처, 이미지/비디오 프레임, canvas 요소 (toDataURL(), getImageData()) 등에서 사용됩니다. Node.js에서는 'cors'라는 미들웨어를 사용하여 CORS를 구현할 수 있습니다..
JWT 갱신 토큰을 클라이언트 측에서 관리하는 일반적인 방법 중 하나는 로컬 스토리지 또는 쿠키에 갱신 토큰을 저장하는 것입니다. 로컬 스토리지를 사용하는 경우, 갱신 토큰은 클라이언트의 브라우저 로컬 스토리지에 저장됩니다. 이렇게 하면, 웹 페이지가 리로드되거나 브라우저가 닫히더라도 토큰이 유지됩니다. 클라이언트는 API 요청을 보낼 때 로컬 스토리지에서 갱신 토큰을 가져와서 요청에 포함시키면 됩니다. 쿠키를 사용하는 경우, 갱신 토큰은 쿠키에 저장됩니다. 쿠키를 사용하면 서버가 클라이언트에게 쿠키를 자동으로 설정하고, 브라우저는 그 후의 모든 요청에 자동으로 쿠키를 포함시킵니다. 쿠키를 사용하는 것은 CSRF(Cross-Site Request Forgery) 공격에 대한 보호를 제공하지만, XSS(C..
JWT (JSON Web Token) 갱신 토큰을 이용한 인증 시스템에서 데이터베이스는 토큰의 유효성을 관리하고 보관하는 중요한 역할을 합니다. 데이터베이스를 이용하는 방식은 서버 측에서 토큰의 유효성을 검증하고, 필요에 따라 토큰을 무효화할 수 있게 해주는 강력한 방법입니다. 토큰의 생성과 저장 먼저, 사용자가 시스템에 로그인하면 서버는 JWT 토큰을 생성합니다. 이때 생성되는 토큰은 두 종류로, 하나는 짧은 유효 기간을 가진 액세스 토큰(access token)이고, 다른 하나는 긴 유효 기간을 가진 갱신 토큰(refresh token)입니다. 이 두 토큰 모두 클라이언트에게 전달되며, 클라이언트는 이를 저장하여 사용합니다. 하지만 이때 서버도 갱신 토큰에 대한 정보를 자신의 데이터베이스에 저장합니다..
JSON Web Token(JWT)는 웹 표준 (RFC 7519)으로, 두 객체 사이에서 정보를 안전하게 전송하는 방법을 정의합니다. JWT는 일반적으로 인증 및 정보 교환에 사용됩니다. Node.js 애플리케이션에서 JWT를 생성하고 검증하는 데는 jsonwebtoken 라이브러리를 자주 사용합니다. 다음은 JWT를 사용한 로그인 API의 예시입니다: const express = require('express'); const jwt = require('jsonwebtoken'); const app = express(); app.use(express.json()); // Enable JSON body for POST requests app.post('/login', (req, res) => { const..