코딩공부/개발지식 61

JWT(JSON Web Token)의 이해와 활용

JWT란 무엇인가?JWT는 JSON Web Token의 약자로, JSON 형태의 데이터를 네트워크를 통해 안전하게 전송하기 위해 설계된 방식입니다. JWT는 마치 편지와 같은 구조를 가지고 있습니다:봉투 (Header): 토큰의 타입과 사용된 알고리즘 정보편지지 (Payload): 실제 전달하려는 데이터 (Claims)서명 (Signature): 토큰의 유효성을 검증하기 위한 서명 JWT의 구조JWT는 세 부분으로 구성되며, 각 부분은 Base64로 인코딩되어 점(.)으로 구분됩니다:header.payload.signature  JWT의 핵심: 서명(Signature)서명은 JWT의 무결성을 보장하는 핵심 요소입니다. 서명 과정은 다음과 같습니다:비밀키(Secret Key)를 사용헤더와 페이로드를 입력으..

웹 애플리케이션의 인증과 인가(쿠키, 세션, 토큰, JWT)

인증과 인가의 기본 개념인증(Authentication): 사용자의 신원을 확인하는 과정 (놀이공원 입장권)인가(Authorization): 인증된 사용자에게 특정 리소스에 대한 접근 권한을 부여하는 과정 (놀이공원에서만 사용가능) 인증 방법의 발전 3.1. 기본 인증- 사용자 ID와 비밀번호를 직접 입력- 보안상 취약점 존재 3.2. 쿠키/세션 기반 인증- 브라우저의 쿠키를 이용한 사용자 정보 저장 (클라이언트 저장)- 서버 측 세션 관리의 도입 (서버 저장) 3.3. 토큰 기반 인증- JWT(JSON Web Token) 활용- 무상태성(Stateless) 구현으로 서버 부하 감소- 토큰 기반 인증의 구체적 구현 4.1. 액세스 토큰과 리프레시 토큰- 액세스 토큰: 짧은 유효기간, 실제 인증에 사용- ..

OAuth 2.0 쉽게 이해하기: 인증과 인가의 안전한 분리

OAuth 2.0이란?OAuth 2.0은 서로 다른 서비스 간에 안전하게 인증과 권한 부여를 할 수 있게 해주는 표준 프로토콜입니다. 이를 통해 사용자의 민감한 정보를 직접 공유하지 않고도 다른 서비스의 기능을 이용할 수 있습니다.  OAuth 2.0이 필요한 이유예를 들어, '우아한 캘린더'라는 서비스를 만들었다고 가정해봅시다. 이 서비스는 구글 캘린더와 연동하여 일정을 관리하려고 합니다. OAuth 2.0 없이는 다음과 같은 문제가 발생할 수 있습니다사용자의 구글 아이디와 비밀번호를 직접 받아야 함보안 위험 증가불필요한 접근 권한 발생OAuth 2.0을 사용하면 이러한 문제를 해결할 수 있습니다.  OAuth 2.0의 주요 개념Resource Owner: 사용자Client: 우리가 만든 서비스 (예:..

웹 개발의 핵심 개념: 쿠키, 세션, 토큰, 캐시 쉽게 이해하기

[추천링크]https://hongong.hanbit.co.kr/%EC%99%84%EB%B2%BD-%EC%A0%95%EB%A6%AC-%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98-%ED%86%A0%ED%81%B0-%EC%BA%90%EC%8B%9C-%EA%B7%B8%EB%A6%AC%EA%B3%A0-cdn/ 완벽 정리! 쿠키, 세션, 토큰, 캐시 그리고 CDN웹 서핑을 하면서 어떤 사이트에 들어가면 쿠키를 설정하라는 문구를 본 적이 있을 거예요. 이 쿠키 때문에 쇼핑 사이트에 로그인하지 않아도 장바구니에 물건을 담아두거나 검색 기록에서 이hongong.hanbit.co.kr 쿠키 (Cookie) 쿠키는 웹사이트가 사용자의 브라우저에 저장하는 작은 데이터 조각입니다.예시: 쿠키는 마치 온라..

JWT와 OAuth: 인증과 권한 부여

1.JWT (JSON Web Token)란?JWT는 당사자 간에 정보를 JSON 객체로 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 정의하는 개방형 표준입니다. 주요 특징:구조: Header, Payload, Signature 세 부분으로 구성사용 사례: 인증 및 정보 교환장점: 상태를 저장할 필요가 없어 서버 부하 감소JWT 작동 방식:사용자 로그인서버가 JWT 생성 및 클라이언트에 전송클라이언트가 후속 요청에 JWT 포함서버가 JWT 검증 후 요청 처리 2. OAuth란?OAuth는 사용자 데이터에 대한 접근 권한을 제3자 애플리케이션에 부여할 수 있게 하는 개방형 표준 프로토콜입니다. 주요 특징버전: OAuth 1.0과 OAuth 2.0 (더 널리 사용됨)목적: 안전한 위임 접근역할: Reso..

RESTful API: 웹 서비스 설계를 위한 아키텍처 스타일

1. RESTful API 개요RESTful API(Representational State Transfer API)는 웹 서비스 설계를 위한 아키텍처 스타일입니다. REST 원칙을 따르는 API는 확장성, 유연성, 독립성을 갖추며 웹 서비스 간 효율적인 통신을 가능하게 합니다.1.1 REST의 주요 원칙클라이언트-서버 구조무상태(Stateless)캐시 가능(Cacheable)계층화 시스템(Layered System)균일한 인터페이스(Uniform Interface)2. RESTful API 설계 기본2.1 리소스 식별URI를 통해 리소스를 명확하게 식별합니다.예시:좋은 예: /users/123나쁜 예: /api/get-user?id=1232.2 HTTP 메소드 활용리소스에 대한 동작을 HTTP 메소드로..

데이터베이스 스케줄러: 자동화된 쿼리 실행의 핵심

1. 데이터베이스 스케줄러 개요데이터베이스 스케줄러는 특정 시간이나 주기적으로 데이터베이스 작업을 자동으로 실행하는 도구입니다. 이는 데이터 관리, 성능 최적화, 보고서 생성 등 다양한 목적으로 사용됩니다.1.1 스케줄러의 주요 기능정기적인 데이터 정리 및 아카이빙주기적인 통계 및 보고서 생성데이터베이스 유지보수 작업 자동화데이터 백업 및 복구 프로세스 관리2. MySQL에서의 스케줄러 구현MySQL에서는 이벤트 스케줄러를 통해 예약된 작업을 실행할 수 있습니다.2.1 이벤트 스케줄러 활성화먼저, MySQL 서버에서 이벤트 스케줄러를 활성화해야 합니다:SET GLOBAL event_scheduler = ON; 2.2 이벤트 생성 예시다음은 매일 자정에 30일 이상 된 로그를 삭제하는 이벤트 예시입니다:D..

데이터베이스의 트리거와 튜닝

1. 트리거 (Trigger)1.1 트리거란?트리거는 데이터베이스에서 특정 이벤트(삽입, 수정, 삭제 등)가 발생했을 때 자동으로 실행되는 프로그래밍 로직입니다. 이는 데이터의 무결성을 유지하고, 복잡한 비즈니스 로직을 구현하는 데 도움을 줍니다.1.2 트리거의 주요 용도데이터 유효성 검사자동 값 생성 또는 수정관련 테이블 동기화감사(Audit) 로그 생성1.3 MySQL에서의 트리거 예시다음은 새 주문이 추가될 때마다 재고를 자동으로 감소시키는 트리거 예시입니다:DELIMITER //CREATE TRIGGER after_order_insertAFTER INSERT ON ordersFOR EACH ROWBEGIN UPDATE products SET stock = stock - NEW.quant..

데이터베이스의 프로시저: 특징과 장단점 그리고 주의사항

1. 프로시저란 무엇인가?프로시저(Procedure)는 데이터베이스에서 실행할 수 있는 저장된 프로그램 단위입니다. 이는 SQL 문들의 집합으로, 복잡한 처리를 모듈화하여 재사용성을 높이고 편리하게 사용할 수 있게 해줍니다.1.1 프로시저의 특징여러 SQL 문을 하나의 단위로 실행매개변수를 받아 동적으로 동작 가능데이터베이스 내에 저장되어 필요할 때 호출하여 사용보안성 향상 및 네트워크 트래픽 감소2. 프로시저의 장점2.1 성능 향상프로시저는 미리 컴파일되어 저장되므로, 실행 시 빠른 처리가 가능합니다.2.2 재사용성한 번 작성된 프로시저는 여러 곳에서 반복적으로 사용할 수 있습니다.2.3 보안 강화데이터베이스 객체에 대한 직접적인 접근을 제한하고, 프로시저를 통해서만 데이터 조작을 허용할 수 있습니다...

데이터베이스 트랜잭션: 안전하고 일관된 데이터 처리

1. 트랜잭션의 개념트랜잭션(Transaction)은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위입니다. 이는 여러 개의 연산을 하나의 논리적 단위로 묶어 처리하는 것을 의미합니다. 트랜잭션의 주요 목적은 데이터의 일관성을 유지하고 안정적인 데이터베이스 상태를 보장하는 것입니다.1.1 트랜잭션의 특성 (ACID)트랜잭션은 다음 네 가지 특성을 가집니다:원자성(Atomicity): 트랜잭션의 모든 연산이 완전히 수행되거나 전혀 수행되지 않아야 합니다.일관성(Consistency): 트랜잭션 실행 전후의 데이터베이스 상태가 일관되어야 합니다.격리성(Isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 합니다.지속성(Durability): 성공적으로 완료된 트랜잭션의 결과..