코드스테이츠_국비교육 158

65.02_[Spring Security]JWT_JSON Web Token_22.11.23

>JWT : JSON Web Token : JSON 포맷의 토큰 정보를 인코딩한 후, 인코딩 된 토큰 정보를 비밀키(개인키)로 서명한 메세지를 Web Token으로써 인증 과정에 사용 : Rest API 통신을 사용하는 백엔드 서버에 사용하기 적합한 자격 증명 방식 >JWT의 종류 1. Access Token 2. Refresh Token >액세스 토큰, Access Token : 사용자 정보에 접근할 수 있는 권한을 부여하는데 사용되는 토큰 : 액세스 토큰은 보안 위험성 때문에 유효 기간을 짧게 주어 오래 사용할 수 없다. >리프레시 토큰, Refresh Token : 새로운 액세스 토큰을 받기 위해 사용되는 토큰 : 액세스 토큰이 만료되면 리프레시 토큰으로 새로 액세스 토큰을 발급받고, 이를 통해 사..

65.01_[Spring Security]JWT_Session 과 Token_22.11.23

>HTTP 프로토콜 특징 HTTP 프로토콜은 request를 전송한 후, response를 수신하면 연결을 끊는 비연결성(Connectionless)과 reques와 response에 대한 상태를 저장하지 않는 비상태성(Stateless)이 특징이다. 이는 다양한 장점을 갖게하는 특징들이지만, 사용자에게 불편을 가져다준다. >세션 기반 자격 증명 방식 : 서버 측에 인증된 사용자의 정보를 세션(Session) 형태로 세션 저장소에 저장하는 방식 : Session은 서버측에는 세션 저장소에 저장되고, 클라이언트에는 쿠키로 저장된다. (클라이언트에는 세션 ID를 보낸다) : 양측의 세션이 확인되면 인증된 사용자라고 판단하여 정보 교환을 한다. >세션 기반 자격 증명의 특징 : HTTP 통신을 Stateful..

63.01-64.01_[Spring Security] Spring Security 흐름_22.11.21-22.11.22

>Servlet Filter Filter Sevlet 기반 애플리케이션의 DispacherServlet은 가장 최전선에서 Client와 소통을 담당한다. SevletFilter는 Client와 DispacherSevlet 사이에서 특별한 목적의 처리를 하는 Java의 컴포넌트이다. Request가 DispacherSevlet로 가기전에 '전'처리를 할 수 있고, Response가 Client로 가기전에 '후'처리를 할 수 있다. SevletFilter는 목적에 따라 다양한 필터가 존재하고 사용할 수 있다. Spring Security는 이러한 필터 기능을 이용하여 Request가 DispacherSevlet로 들어오기전 인증(Authentication), 권한 부여(Authorization)와 같은 작업..

62.03_[Spring Security] 로그인 인증_Database_22.11.18

>Custom UserDetailsService 사용 : InMemory 사용하는 방법에서는 UserDetailsManager(인터페이스) 사용 : UserDetailsManager는 UserDetailsService(인터페이스) 상속 : Custom UserDetailsService 란, UserDetailsService를 구현하여 만든 클래스이다. >UserDetailsService 를 사용한다는 것의 의미 : Spring Security에서 User의 인증 정보를 테이블에 저장하고, 테이블에 저장된 인증 정보를 이용해 인증 프로세스를 진행하는 방법 중 하나. : 즉, Spring Security 에서 제공하는 인증 프로세스를 사용하기 위함. >Custom UserDetailsService 사용하기 ..

62.02_[Spring Security] 로그인 인증_InMemory_22.11.18

회원 가입 폼을 통한 InMemory User 등록 1. PasswordEncoder Bean 등록 >PasswordEncoder : 패스워드 암호화 기능을 제공하는 컴포넌트(인터페이스) : bcrypt가 default 암호화 알고리즘 : DelegatingPasswordEncoder, PasswordEncoder 를 구현한 클래스 2. MemberService Bean 등록 >MemberService : Member Entity 관련 인터페이스 : createMember() >InMemoryMembmerService : MemberService를 구현한 클래스 : InMemory에 Member 정보를 저장 >DBMemberService : MemberService를 구현한 클래스 : InMemory가 ..

62.01_[Spring Security] Spring Security 개요_22.11.18

>현재 학습용 애플리케이션의 문제 >Spring Security : Spring MVC 기반 애플리케이션의 인증(Authentication)과 인가(Authorization or 권한 부여) 기능을 지원하는 보안 프레임워크 : Spring MVC 기반 애플리케이션에 보안을 적용하는 사실상 표준으로 사용된다. >Spring Security로 강화할 수 있는 보안 요소 다양한 유형의 사용자 인증 기능 적용 가능 -폼 로그인 인증 -토큰 기반 인증 -OAuth 2 기반 인증 -LDAP 인증 애플리케이션 사용자의 역할(Role)에 따른 권한 레벨 적용 가능 애플리케이션에서 제공하는 리소스에 대한 접근 제어 가능 민감 정보에 대한 데이터 암호화 SSL 적용(Secure Sockets Layer) SSL : 이터를..

61.04_[인증/보안] 기초_웹 보안 공격_22.11.17

>SQL Injection >SQL Injection 시나리오 >SQL Injection 대응 방안 1. 입력(요청)값 검증 2. Prepared Statement 3. Error Message 노출 금지 >화이트 리스트 >XSS >CSRF : Cross Site Request Forgery : 다른 사이트(cross-site)에서 유저가 보내는 요청(request)을 조작(forgery)하는 것 : 해커는 요청만 조작할 뿐, 직접 데이터를 접근할 수 없다. 따라서, 해커는 사용자에게 조작된 요청을 제공한다. : ex) 이메일에 첨부된 링크를 누르면 내 은행계좌의 돈이 빠져나감 >CSRF 공격 조건 1. 로그인의 방식에 쿠키를 사용해야 한다. : 쿠키로 어떤 유저인지 확인 가능해야하기 때문 2. 예측할 ..

61.03_[인증/보안] 기초_쿠키, 세션_22.11.17

>Cookie : 어떤 웹사이트에 들어갔을 때, 서버가 일방적으로 클라이언트에 전달하는 작은 데이터 (보통은 사용자에게 의사를 묻지 않음) : 서버가 웹 브라우저에 정보를 저장하고 불러올 수 있는 수단. >Cookie 목적 : HTTP의 특징인 Stateless를 보완하기 위한 도구 >Cookie 특징 : 삭제하지 않으면 정보가 사라지지 않음. : 장기간 저장해야하는 옵션을 클라이언트에 저장하기 적합 : 장바구니 유지, 로그인 상태 유지 등 >Cookie 전달 방법 : 서버의 헤더에 `Set-Cookie`로 쿠키의 이름, 값, 경로 등을 전달함. >Cookie Options -Domain : 서버와 요청의 도메인이 일치하는 경우 쿠키 전송 -Path : 서버의 요청의 세부 경로가 일치하는 경우 쿠키 전송..

61.02_[인증/보안] 기초_해싱_22.11.17

>인증/보안 과정 1. No Authentication (인증) : 인증 과정이 없다면 누구나 모든 정보에 접근이 가능함. 2. Authentication (Plaintext) : 누구나 모든 정보에 접근이 가능한 것을 막는 것이 목표 : 패스워드의 개념이 생김 : 패스워드를 입력하고 패스워드를 확인하여 해당 패스워드를 가진 유저에게만 정보에 접근이 가능하도록 함. : 하지만 패스워드를 중간에 가로챈다면 그대로 악용될 수 있음. 3. Encrytion (암호화) : 때문에 패스워드를 암호화할 필요가 생김. : 패스워드를 암호화하는 알고리즘은 수 없이 많고, 그 중 하나로 Hashing이 있음. 4. Authentication (Hashing) : 패스워드를 처음 생성하면 Hashing 을 통해 다른 문자..

61.01_[인증/보안] 기초_HTTPS_22.11.17

>인증 : 암호화를 이용하여 사람의 디지털 정체성을 확인하는 과정 >보안 : 여러 위협으로부터 정보를 보호하는 것 : 소 잃기전에 미리 최대한 튼튼한 외양간을 만드는 것이 목적 >HTTPS : HTTP + Secure : HTTP 프로토콜 내용을 암호화 >HTTPS 특징 1. 기밀성 : 메세지를 암호화함 ( 읽을 수 없음 ) 2. 무결성 : 메세지를 조작(수정) 할 수 없음 >인증서 : 데이터 제공자의 신원을 보장하는 문서 : CA라고 표현하는 기관들에서 인증서를 발급함. : OS 또는 브라우저에는 CA의 리스트들이 내장되어 있고, 이를 근거로 서버에서 제공받는 인증서가 인증된 CA에서 발급 된 문서인지 검증함. >CA : 인증서를 발급해주는 기관 : 각 브라우저마다 신뢰하는 CA의 인증서를 가지고 있다..