TIL | readme 질의응답 내용

bubblegum·2024년 2월 6일
0

Today I learn(TIL)

목록 보기
21/84
post-thumbnail

1. 인증과 인가

인증(Authentication)과 인가(Authorization)는 보안 및 접근 제어와 관련된 두 가지 중요한 보안 개념입니다.

인증(Authentication)

  • 정의: 인증은 사용자가 자신이 주장하는 신원을 확인하는 과정입니다. 사용자는 보통 아이디와 비밀번호 또는 다양한 인증 수단(생체 인식, 토큰 등)을 통해 시스템에 로그인하여 자신의 신원을 확인합니다.
  • 목적: 인증은 시스템이 사용자를 식별하고 자신이 주장하는 사용자임을 확인하여 안전한 접근을 보장합니다.

인가(Authorization)

  • 정의: 인가는 인증된 사용자에 대해 특정 리소스 또는 기능에 대한 액세스 권한을 부여하는 프로세스입니다. 즉, 인가는 사용자가 특정 작업을 수행할 권한이 있는지 확인하는 과정입니다.
  • 목적: 인가는 사용자가 특정 리소스에 대한 권한이 있는지 확인하여 사용자가 허용된 작업만 수행하도록 보장합니다.

예시

  • 인증: 사용자가 아이디와 비밀번호로 로그인하여 자신의 계정에 대한 신원을 확인합니다.
  • 인가: 인증된 사용자가 특정 페이지에 접근할 때, 시스템은 해당 사용자에 대한 권한을 확인하고, 권한이 있다면 페이지에 접근을 허용하고 없다면 거부합니다.

2. MySQL, Prisma로 개발했는데 MySQL을 MongoDB로 혹은 Prisma 를 TypeORM 로 변경하게 된다면 많은 코드 변경이 필요할까요? 주로 어떤 코드에서 변경이 필요한가요?

MySQL에서 MongoDB로 또는 Prisma에서 TypeORM으로 변경하는 것은 데이터베이스 및 ORM(Object-Relational Mapping) 도구 간에 다양한 차이점이 있기 때문에 일부 코드 변경이 필요할 수 있습니다. 변경의 정도는 프로젝트의 구조, 사용된 기능, 그리고 데이터베이스 간의 차이에 따라 다를 것입니다.

1. 모델 정의

Prisma와 TypeORM은 각각의 ORM에 특화된 모델 정의 방식을 사용합니다. 데이터베이스 간의 데이터 모델이나 스키마의 차이로 인해 모델 정의를 조정해야 할 수 있습니다.

2. 쿼리 및 트랜잭션

데이터베이스 간에 쿼리 언어나 지원하는 트랜잭션 방식이 다를 수 있습니다. Prisma와 TypeORM은 각자의 쿼리 빌더 및 트랜잭션 API를 가지고 있습니다.

3. 인덱스 및 제약조건

데이터베이스 간에 지원하는 인덱스 및 제약조건이 다를 수 있습니다. 이러한 설정을 변경해야 할 수 있습니다.

4. 연결 및 환경 설정

연결 문자열, 데이터베이스 호스트, 포트, 사용자 인증 정보 등은 변경되어야 할 수 있습니다.

5. 비동기/동기 처리

MongoDB는 비동기 작업을 지원하는데 비해 MySQL은 동기 작업을 선호하는 경우가 있습니다. 코드 일부는 이러한 차이를 반영하기 위해 수정되어야 할 수 있습니다.

6. 트랜잭션 및 일관성 관리

MongoDB와 MySQL은 트랜잭션 및 일관성을 다르게 다룰 수 있습니다. 데이터 일관성과 관련된 코드를 수정해야 할 수 있습니다.

7. TypeORM과 Prisma API 차이

TypeORM과 Prisma는 서로 다른 API를 가지고 있습니다. 쿼리, 트랜잭션 및 기타 ORM 관련 코드의 구조가 다를 수 있습니다.

3. JWT(Json Web Token)을 이용해 인증 기능을 했는데, 만약 Access Token이 노출되었을 경우 발생할 수 있는 문제점은 무엇일까요?

1. 인증 우회 (Authentication Bypass):

노출된 Access Token을 악의적인 사용자가 획득하면 해당 토큰을 사용하여 인증을 우회할 수 있습니다. 이로 인해 인가되지 않은 사용자가 보호된 자원에 액세스할 수 있게 됩니다.

2. 토큰 변조 (Token Tampering):

악의적인 사용자가 획득한 Access Token을 변조하여 토큰의 내용을 변경할 수 있습니다. 이로써 사용자 권한을 높이거나 다른 사용자의 권한을 가로챌 수 있습니다.

3. 세션 획득 (Session Hijacking):

Access Token이 노출되면 해당 토큰을 가로채어 다른 사용자의 세션을 획득할 수 있습니다. 이로 인해 공격자는 해당 사용자의 세션을 제어하고 해당 사용자로서 행동할 수 있습니다.

4. 유효한 기간 동안 계속 사용 (Token Expiry Bypass):

Access Token의 유효 기간이 남아있는 동안 공격자는 해당 토큰을 계속 사용할 수 있습니다. 만약 토큰이 긴 유효 기간을 가지고 있다면 공격자가 노출된 토큰을 오랜 기간 동안 악용할 수 있습니다.

5. 사용자 추적 (User Tracking):

노출된 Access Token을 사용하면 사용자의 행동을 추적할 수 있습니다. 이로써 사용자의 개인 정보가 유출될 우려가 있습니다.

6. 재사용을 통한 공격 (Replay Attacks):

노출된 Access Token을 재사용하여 이전에 발생한 요청을 다시 보내는 등의 공격이 발생할 수 있습니다. 이로 인해 무결성이 깨지고, 불법적인 행동이 이뤄질 수 있습니다.

7. 보안 취약점 활용 (Exploiting Security Vulnerabilities):

Access Token이 노출된 경우, 해당 토큰을 사용하여 시스템 내의 다양한 보안 취약점을 활용할 수 있습니다.

이러한 문제를 방지하려면 다양한 방법을 사용하여 Access Token의 안전성을 강화해야 합니다. 예를 들어, 토큰의 유효 기간을 최소화하고, HTTPS를 통한 통신을 강제화하며, 토큰을 안전한 방식으로 저장하는 등의 조치를 취할 수 있습니다. 또한 Refresh Token 등을 사용하여 보안을 강화하는 것도 중요합니다.

profile
황세민

0개의 댓글

관련 채용 정보