Web
HTTP 스터디를 시작하다!
※ 위 책에서 부록을 제외한 5개의 챕터들 중 1 챕터를 정리한 내용임을 알립니다. ※ 상당히 방대한 분량의 책이다 보니, 리와인드 하기에 좋은 액기스 내용들을 간추리고 간추려서 정리했음을 알립니다. 0. 첫 개발 스터디를 시작하다! 10월 11일부터, 드디어 내 인생 처음으로 개발 관련 스터디에 참여해 볼 수 있는 기회를 얻었다. 소재가 되어준 책이 『HTTP 완벽 가이드』라는 점도 좋았다. 여기까지 성장해 오면서 스스로가 기본기를 등한시해왔다는 생각이 드는 만큼, 모든 개발자가 알아야 할 정도로 중요하게 여겨지는 HTTP 기본기를 다지고 싶다는 욕심이 생겼다. 1. HTTP의 역할 Q. 그래서 HTTP가 뭔데? HyperText Transfer Protocol, 말 뜻 그대로 표현하자면, HTML과 ..
OAuth 2.0
웹 사이트들을 돌아다니다 보면 흔하게 볼 수 있는 소셜 로그인 인증 방식은 OAuth 2 라는 기술을 바탕으로 구현된다. OAuth는 인증을 중개해주는 매커니즘이다. 보안된 리소스에 액세스하기 위해 클라이언트에게 권한 제공 프로세스를 단순화하는 프로토콜이다. 이미 사용자 정보를 갖고 있는 웹 서비스(Github, Google, Facebook 등)에서 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급한 후, 이를 이용해서 해당 앱에서 인증이 가능하도록 한다. 하지만 OAuth가 모든 것을 해결해주는 것은 아니다. 사용자 정보가 내 서버에 저장된다는 사실에는 변함이 없기 때문이다. OAuth는 Authentication(인증)을 다른 서비스에 맡길 뿐, Authorization(권한 관리)는 순전..
Token
Token-based Authentication을 사용하는 이유 Session 기반 인증은 서버 혹은 DB에 유저 정보를 담는 인증 방식이었다. 서버에서는 유저가 민감하거나 제한된 정보를 요청할 때마다 갖고 있는 세션 값과 일치하는 세션 아이디를 갖고 있는지 확인한다. 매 요청마다 이러한 작업을 진행하는 것이 불편하기 때문에 토큰 기반 인증 방식이 등장했다. 클라이언트에서 인증 정보를 보관 '토큰' 하면 동전을 떠올리게 될 것이다. 현실에서는 주로 돈과 교환되는 시설 이용권에서 비롯된 용어라고 보면 된다. 클라이언트에서 인증 정보를 보관하기 위해 토큰 기반 인증 방식이 고안되었다. 하지만 클라이언트는 XSS, CSRF 공격에 대비하기 위해서 민감한 정보를 담으면 안되는데, 어떻게 이러한 방식이 유효할 수..
Session
Session은 쿠키의 보안 취약성을 보완하기 위해 등장했다. 쿠키는 데이터를 클라이언트에 저장한다면, Session은 데이터를 서버에 저장한다. 쿠키에는 세션의 key만을 두기 때문에 한결 더 보안이 강화된다. 어떻게든 세션을 저장해두어야 하기 때문에 메모리를 사용하며, 서버 성능 이슈를 발생시킬 수 있다. 로그인 로그인 시, 사용자가 정확한 아이디와 비밀번호를 입력했다면 서버는 인증(Authentication)에 성공했다고 판단할 것이다. 그리고 다음 번에 인증을 필요로 하는 작업을 할 때에는 동일한 인증 작업을 굳이 다시 할 필요가 없을 것이다. 다시 말해, '인증에 성공했음'을 서버가 알고 있다면 매번 로그인할 필요가 없게 해야 한다는 것 이다. 이러한 작업을 위해 필요한 것은 다음과 같다. 서버..
Cookie
쿠키는 서버에서 클라이언트에 데이터를 저장하는 방법 중 하나이다. 이를 이용해서 서버는 원한다면 쿠키를 이용해서 클라이언트의 데이터를 가져올 수 있다. 그러므로 쿠키를 이용한다는 것은 단순히 서버에서 클라이언트로 쿠키를 전송하는 것 뿐만이 아니라, 클라이언트에서 서버로 쿠키를 전송하는 것 도 포함된다. 서버가 클라이언트에 데이터 저장 쿠키는 클라이언트에 저장될 수 있지만, 데이터를 저장한 이후 아무 때나 데이터를 가져올 수는 없다. 데이터를 가져오기 위한 조건이 있으며, 이를 쿠키 옵션 이라고도 표현한다. 1. Domain 쿠키 옵션에서의 도메인에는 서브 도메인 및 세부 경로를 포함하지 않는다. 만약 쿠키 옵션에 도메인 정보가 존재한다면 쿠키의 도메인 옵션과 서버의 도메인이 일치해야만 쿠키 전송이 가능하..
HTTPS
HTTPS는 HyperText Transfer Protocol Secure Socket layer 의 약자이며, HTTP over SSL(TLS), HTTP over Secure라고 부르기도 한다. HTTPS는 HTTP 요청을 SSL 혹은 TLS라는 Algorithm을 활용해서 HTTP 통신을 하는 과정에서 내용을 암호화하여 데이터를 전송하는 방법이다. HTTPS를 이용하면 데이터 제공자의 신원을 보장받을 수 있으며, 이렇게 신원을 확인하고 보장받는 것이 중요한 이유는 다음과 같다. 클라이언트는 데이터 제공자의 데이터를 어떻게든 사용하게 되어 있다. 그렇기에 요청 및 응답을 중간에서 가로채는 중간자 공격 에 취약해진다. 데이터는 중간에 다른 도메인을 거쳐서 전달되기 때문에 어떤 도메인에서 제공되었는지 에..
AWS 활용을 위해 알아두면 좋은 개념들
EC2 Instance를 원격 제어하기 위한 SSH 연결 EC2 Instance 생성 시, SSH 연결을 위해서 키 페어를 생성해야 하는 과정이 있다. 여기서 SSH(Secure Shell) Protocol은 PC와 PC가 Public Networt를 통해서 통신할 때, 보안상 안전하게 하기 위한 Protocol이다. EC2 Instance를 만들 때 키 페어를 생성하는 것은, 주고 받는 데이터를 암호화해서 해당 키 페어를 가지지 않은 사람은 통신되는 데이터를 알아볼 수 없게 하기 위한 조치이다. 키 페어를 생성하게 되면 .pem 확장자를 가진 파일을 내려받게 되는데, 이는 AWS에서 빌린 컴퓨터를 원격으로 제어하기 위해 SSH 통신을 하고자 할 때 필요한 Private Key가 기록된 파일이다. 따라서..
AWS의 핵심 개념들 및 서비스들
Cloud Computing 기존 서버의 방식에서는 한 공간에 컴퓨터를 설치하여 서버를 운용했다. 그리고 서버 수용 능력이 한계에 도달하면 컴퓨터를 추가로 설치하거나 각 컴퓨터의 성능을 높이기도 했다. 그러나 이와 같은 서버 관리 방법에는 다음과 같은 문제점들이 있다. 주기적인 관리 필요 → 인력 및 비용 투자 증가 공간의 한계 서버 증설 작업이 까다롭다 보니, 일부 거대 기업은 데이터 센터라는 거대한 건물을 세우기 시작했다. 그리고 이때부터 데이터 센터의 유휴 자원을 대여하는 서비스가 등장하기 시작했다. (이러한 환경을 Off-premise라고 부른다.) 즉 서버의 자원과 공간 및 네트워크 환경을 빌려서 사용하는 Cloud Computing이 시작된 것이다. 장점 데이터 센터와도 비슷한 역할을 하지만,..
MVC 패턴
※ 본문은 김영한 선생님의 인프런 '스프링 MVC 1편' 강의를 듣고 정리한 내용임을 알립니다. Model / View / Controller ▶ Controller : HTTP 요청을 받아서 파라미터를 검증하고 비즈니스 로직을 실행, 그리고 View에 전달할 결과 데이터를 조회해서 Model에 담는다. ▶ Model : View에 출력할 데이터를 담아둔다. : View가 필요한 데이터를 모두 Model에 담아서 전달해주기 때문에 View는 화면을 렌더링하는 일에 집중할 수 있다. ▶ View : Model에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다. ※ Service : Controller에 비즈니스 로직을 둘 수도 있지만, 이 경우에는 Controller가 너무 많은 역할을 담당한다. ..