본문 바로가기

전체 글

[TIL] 사이드 프로젝트 5일 진행 상황 응답, 예외처리 공통 적인 부분 논의와 공부 더보기
[TIL] 사이드 프로젝트 4일 1. 개발 진행 상황 이번 프로젝트는 진짜 공부를 하면서 새로운 기술도 배우고 코드에 대한 이해도를 높이기 위한 사람들이 모여서 진행하는 프로젝트로 코드 복붙이 아닌 제대로 알고 기능 구현을 하려고한다. 그래서 지금 약한 부분들을 의논하며 공부중이다. 오늘은 예외처리에 대한 공부를 함 더보기
📝 Spring Security란? Spring Security 란? spring 기반의 어플리케이션의 보안을 담당하는 프레임 워크이다. ‘인증’ 과 ‘권한 ‘에 대한 부분을 filter 흐름에 따라 처리하며 filter는 Servlet으로 가기 전 가장 먼저 url 요청을 받는다. 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점이 있다. 인증**(Authentication)과 권한(Authorization)** 인증 사이트에 접속하려는 자가 누구인지 확인하는 절차 usernamepassword를 통해 인증(session, token 관리) sns로그인을 통한 인증 위임을 할 수도 있다 권한 사용자가 어떤 일을 할 수 있는지 권한 설정하는 절차 특정 페이지/리소.. 더보기
📝 트랜잭션(Transacction)이란? 데이터베이스에서 데이터에 대한 하나의 논리적 실행단계 특징 원자성(Atomicity): 트랜잭션은 All or Noting의 실행만 가능(일부 실행 불가) 일관성(Consistency): 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관된 데이터베이스 상태가 됨 독립성/고립성(Isolation): 트랜잭션 작업 수행 중에는 다른 트랜잭션에 영향을 주어서도 안되고, 간섭을 받아서도 안됨. 예를들어 다수의 트랜잭션이 동시에 수행중인 상황에서 하나의 트랜잭션이 완료될 때까지 현재 실행중인 트랜잭션의 중간 수행결과를 다른 트랜잭션에서 참조 불가 영구성/지속성(Durability): 트랜잭션이 실행을 성공적으로 끝내면 그 결과를 어떠한 경우라도 보장 받음 트랜잭션을 사용한 폴더 생성 예시 public List.. 더보기
📝 OAuth란? OAuth를 사용하는 이유 보안의 수준을 알 수 없는 애플리케이션에서 일일히 계정을 만들어 사용하면 ID/PW 관리가 어렵고 개인정보가 유출되면 연쇄적으로 피해가 심각하기에, 보안 수준이 어느정도 검증된 사이트(ex, google, facebook)의 API를 이용해서 인증을 받는 방법이 보안상 좋기 때문이다. OAuth2 동장 방식 OAuth 인증 방식은 인증의 과정을 '타 서비스에게 위임'하는 인증방식. 예를 들어 내 사이트에 구글 로그인 인증을 넣었다고 해서 사용자가 구글 웹사이트에 직접 로그인하는 것이 아니라, 사용자의 정보는 내 사이트에서 관리하고, 구글 로그인 기능을 통해 구글에게 전송한 구글 계정 정보가 유효한지 확인한 후, 유효하다면 해당하는 구글 유저 정보 중 일부를 내 사이트에 제공해 .. 더보기
📝 쿠키와 세션 클라이언트와 서버 간의 HTTP 요청에서는 사용자에 대한 정보를 저장하지 않습니다(Stateless). 쿠키와 세션 모두 HTTP에 상태 정보를 유지하기 위해 사용됩니다. 쿠키 클라이언트에 저장 쿠키 저장 시 만료일시 설정 가능 클라이언트에서 쿠키 정보를 쉽게 변경, 삭제 가능하여 보안에 취약한 편 세션 웹 서버에 저장 서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용 클라이언트가 요청시 서버는 세션 ID를 생성하여 전달하고 클라이언트는 이를 받아 세션쿠키로 저장 더보기
📝 JWT 토큰(JSON Web Token) 1. JWT(JSON Web Token) JSON 객체를 통해 안전한게 정보를 전송할 수 있는 웹 표준(RFC7519) 2. JWT의 구조 '.(마침표)'를 구분자로 암호화된 세 가지 데이터가 붙어있는 구조 1) 헤더(Header) alg: Verify Signature를 만드는 데 사용된 알고리즘 typ: 토큰의 타입. 이 부분은 언제나 고정값 'JWT' 2) Payload: DATA - 실제로 전달할 정보 - payload는 Base 64로 디코딩 하면 JSON 형식으로 여러 정보들을 포함하고 있음 (이 토큰을 누가 누구에게 발급했는지, 이 토큰이 언제까지 유효한지, 서비스가 사용자에게 이 토큰을 통해 공개하기를 원하는 내용 등) - 특히 토큰에 담긴 사용자 정보 등의 데이터를 claim이라고 하는데.. 더보기
📝 절차지향 / 객체지향 / 관점지향 프로그래밍 정리 절차적 프로그래밍 (PP; Procedure Programming) procedure(main 함수, 메소드 등)를 이용하여 작성하는 프로그래밍 스타일이다. 순차적인 처리를 중요시 여기며, 프로그램 전체가 유기적으로 연결되도록 한다. 컴퓨터의 처리 구조와 비슷해 실행속도가 빠르지만 확장성이 떨어지며 유지보수가 어렵다. 객체지향 프로그래밍(OOP; Object Oriented Programming) 프로그래밍에 필요한 attribute와 method를 포함한 class를 정의하고, 정의된 class를 통해서 object를 생성하여 object들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방식 유지보수가 보다 수월하지만 설계에 필요한 시간이 크다. 관점지향 프로그래밍(AOP; Aspect Or.. 더보기