목록분류 전체보기 (63)
쏭의 개발 블로그
[1] JWT란?JWT는 RFC 7519 웹 표준으로 지정된 JSON 객체를 사용해서 토큰 자체에 정보를 저장하는 Web Token이다. 사용자의 인증 정보를 안전하게 전달하기 위한 방식이라고 생각하면 된다. JSON 데이터를 Base 64 URL-safe Encode를 통해 인코딩하여 직렬화한 것이며, 토큰 내부에는 위변조 방지를 위해 HMAC, RSA, ECDSA 등의 암호화 방식을 사용한 전자 서명도 들어있다. 여기서 Base URL-safe Encode는 일반적인 Base 64 Encode에서 URL에서 오류 없이 사용하도록 '+'와 '/'를 '-'와 '_'로 표현한 것이다.JWT는 서버가 사용자에게 발급하며, 사용자는 이를 활용하여 서버와의 통신에서 자신을 입증할 수 있게 된다. (1) 구조aa..

Redis를 공식적으로 리눅스 기반의 OS만 지원한다. Windows 환경 자체적으로 설치하는 것이 불가능해서 WSL2를 사용하거나 아래 URL에서 지원하는 Windows OS 버전을 사용할 수 있다. https://github.com/microsoftarchive/redis/releases Releases · microsoftarchive/redisRedis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redisgit..

Index Scan이란?Index Scan은 테이블을 조회할 때 ,인덱스를 활용하여 데이터를 검색하는 방식이다. Full Table Scan (Sequential Scan)테이블에 존재하는 모든 데이터를 읽어가면서 조건에 맞으면 결과로 추출하고, 조건에 맞지 않으면 버리는 방식이다.인덱스를 거치지 않고 테이블 데이터에 직행하여 처음부터 끝까지 스캔하는 방식으로, 테이블의 모든 레코드를 순차적으로 조회한다. 디스크 I/O 비용이 많이 발생하며 대량의 데이터를 처리할 때는 시스템 성능에 부정적인 영향을 미칠 수 있다.대량의 데이터에 접근할 때 Full Table Scan을 활용하면 인덱스를 통한 랜덤 엑세스가 발생하지 않아 이점이 있다. Full Table Scan의 사용Full Table Scan은 다음 ..

DB Connection PoolWAS - DB 연결과 DB 커넥션 풀DB 커넥풀에 대해 설명하기에 앞서, WAS와 DB연결에 대해 말하자면 다음과 같다.WAS와 DB는 평상시에 연결되어있는 것이 아니라 Request가 오는 시점에 연결하고 정보를 가져온다. 이때 연결 시 TCP/IP 핸드셰이크와 같은 여러 단계를 거쳐야하므로 상당한 시간이 걸린다.웹에서 수많은 클라이언트가 동시다발적으로 웹서비스에 접근해 Request들을 날리는 경우 시간 지연 문제가 발생한다. 이를 해결하기 위해 DB Connection Pool을 만들어 DB 연결을 미리 해두는 것이다.위 그림을 예로 들면, 5개의 연결을 미리 해두고, request가 들어오면 연결된 것들을 통해 정보를 가져온다. 또 다른 request가 들어오면 ..
1. Soft Delete 논리 삭제Soft Delete는 데이터베이스에서 데이터를 삭제하지 않지만 사용자 입장에서는 데이터에 접근 할 수 없게 하는 방식이다.테이블에 deleted 컬럼을 만들어 boolean 값으로 데이터 사용 여부를 결정한다고 생각하면 된다. deleted가 false면 조회가 가능하도록 하고 deleted가 true면 조회가 불가능하도록 한다. 데이터가 삭제된 것처럼 해당 데이터에 사용자가 접근할 수는 없지만 데이터베이스에서 여전히 데이터가 존재한다. 장단점Soft Delete의 장점은 다음과 같다.데이터 복구 쉬움 : 실수로 삭제해도 UPDATE를 사용하여 복구할 수 있다.참조 무결성 유지 : 다른 테이블에서 참조 중인 데이터를 유지하면서 삭제가 가능하다.삭제 로그 관리 용이 :..
[1] DB Auto_increment데이터베이스가 자동으로 증가하는 숫자를 부여하여 PK를 생성하는 방식이다. 데이터가 삽입될 때 자동으로 증가하는 번호가 할당되며, 삭제된 값은 자동으로 복구되지 않는다. 장점과 단점은 다음과 같다.장점관리가 간편하며, 단일 데이터베이스 환경에서 성능이 우수하다.정렬된 상태를 유지하므로 B+ Tree 기반 인덱스 성능 최적화가 가능하다데이터 삽입 속도가 빠르다.단점분산 환경에서의 중복 문제 : 분산 데이터베이스 환경에서는 PK가 중복되어 식별자의 유일성이 보장되지 않는다. 여러 샤드에서 동일한 pk를 가지는 경우가 예시이다.보안 문제 : PK를 클라이언트 측에 노출 시 데이터 개수나 특별 시점의 식별자 예측 가능하다. 예를 들어, 사용자가 방금 가입했을 때의 user ..

💡 OAuth 2.0이란? OAuth 2.0이란?OAuth 2.0은 인증을 위한 개방형 표준 프로토콜입니다. 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이라고 할 수 있습니다.구글, 페이스북, 트위터와 같은 다양한 플랫폼의 특정한 사용자 데이터에 접근하기 위해, 제3자 클라이언트(우리의 서비스)가 사용자의 접근 권한을 위임받아 리소스 서버에서 제공하는 자원에 접근할 수 있도록 하는 표준 프로토콜을 제공합니다. 등장배경과거에는 서비스(제3자 클라이언트)가 사용자를 대신하여 페이스북, 구글 등 다양한 플랫폼을 활용하는 기능을 만들 때, 사용자의 ID와 ..

웹 서버에서 세션 유지와 보안휴대폰에서 네이버에 로그인 후 전원을 껐다 다시 켜도 로그인 상태가 유지되는 상황- 디바이스를 껐다 켰음에도 연결(세션)은 끊기지 않고 로그인 정보가 유지됨세션 유지의 원리WAS는 사용자의 로그인 여부를 판단할 때 SID값을 확인하여 세션을 복구한다.사용자가 로그인하면 쿠키 형태로 SID(세션 ID)를 할당받고, SID는 File의 형태로 저장된다.사용자가 디바이스 전원을 껐다 켜고 접속하면, File을 다시 읽어와 SID를 그대로 복구해놓는다. ID, PW를 묻지 않고도 로그인 상태를 유지한다.보안 위험해커가 SID에 해당하는 쿠키값을 탈취하면 ID, PW 없이 로그인이 가능하다. 이를 세션 탈취(Session Hijacking)에 해당한다. 세션 탈취(Session Hij..