공부/Security 3

인증과 권한부여 [Authentication & Authrization]

Authentication [ 인증 ] 1. 식별의 의미 2. AuthN: 항상 권한부여보다 먼저 등장 (우리는 항상 사용자에게 로그인을 먼저하라고한다.) 3. 로그인과 관련된 세부정보만 묻는다. 4. 401 Error Authrization [ 권한부여 ] 1. 인증 후 역할에 따른 접근의 강제 2. AuthZ: 항상 인증 후에 등장 3. 사용자의 자격증명에 대해 몰라도된다. (사용자의 Role을 알아야함. ) 4. 403 Error ROLE: 권한 부여의 그룹. 실제 서비스에는 수백가지의 권한이 존재한다. 사용자에게 일일히 권한을 부여하기에는 코드가 너무 복잡해지므로 ADMIN, USER등 역할을 주고 여러 권한을 한꺼번에 부여한다. 역할에는 항상 'ROLE_ ~~' 같은 접두사가 붙어야한다. 세밀한..

공부/Security 2023.12.19

CORS & CSRF

CORS Cross-Origin Resource Sharing (CORS): 두가지 출처에서 서로의 자원을 공유 여기서 출처: Origin 이란 URI를 뜻한다. origin: (도메인주소, 포트 번호 , HTTP 프로토콜) 서로 다른 출처에서 자원공유를 하려할 때 브라우저에서 보안적 의미로 막는 행위 CORS가 없다면 해커의 서버에서 나의 서버로 쉽게 침투 할 수 있다. 보안 공격방법이 아닌 보안협약이라고 볼 수 있다. 이렇기에 백엔드서버와 프론트서버의 자원 공유를 위해 수동으로 이 설정을 풀어줘야한다. 해결 방법 1. @CrossOrigin(origins = "http://localhost:4200"): Spring REST API 서버에서 Annotation으로 해당 origin의 요청을 허용 문제..

공부/Security 2023.12.19

암호화 Encode / Encrypt / Hash

최근 스프링 시큐리티 강의를 들으면서 사용자의 비밀번호를 암호화 할 때 Hash 암호화 방식을 사용해야하는지 배웠다. 간단하고 짧게 복습하자는 의미에서 글을 남긴다. 암호화방식에는 크게 3가지가 존재한다. 1. Encode 2. Encrypt 3. Hash 1. Encode 대표적으로 Base64를 통해 암호화 하는 방식. 공개적인 암호화 방식으로 암호화를 진행하므로 어떠한 알고리즘을 사용했는지만 알 수 있다면 쉽게 복호화가 가능하다. 그때문인지 비밀번호라던가 유출에 크리티컬한 정보는 Encode 방식으로 암호화 하지않고 주로 이미지, 동영상 업로드에 사용된다. 2. Encrypt Encode방식에서 조금 더 진화된 형태로 Key가 들어간다. 암호화된 데이터를 복호화할때 Key가 없다면 복호화가 불가능...

공부/Security 2023.12.17