안녕하세요. IT 엘도라도 에 오신 것을 환영합니다.
글을 쓰는 것은 귀찮지만 다시 찾아보는 것은 더 귀찮습니다.
완전한 나만의 것으로 만들기 위해 지식을 차곡차곡 저장해 보아요.   포스팅 둘러보기 ▼

웹, 앱 (Web, Application) (18)

[Web] OAuth 2.0 (카카오, 페이스북, 구글 등의 소셜 서비스 연동)

특정 서비스를 이용하다 보면 카카오 로그인, 페이스북 로그인, 구글 로그인 등의 기능을 본 적이 있을 것이다. 이는 해당 서비스를 위해 별도의 번거로운 회원가입 절차를 진행하지 않고도 이미 가지고 있는 카카오 계정, 페이스북 계정, 구글 계정으로 간편하게 서비스를 이용할 수 있도록 해주는 기능이다. 이 기술의 핵심이 바로 OAuth 2.0이다. 즉 OAuth 2.0은 특정 서비스에서 카카오, 페이스북, 구글 등의 소셜 서비스를 연동할 수 있도록 돕는 기술이다. 이번 포스팅에서는 OAuth 2.0의 핵심적인 개념만을 설명할 것이다. 각 웹 어플리케이션 혹은 라이브러리가 구체적으로 이러한 OAuth 2.0을 어떻게 이용하여 소셜 로그인을 구현하는지는 각자 한 번 찾아보자. (참고로 Django의 라이브러리 ..

[Web] 쿠키, 웹 스토리지 (로컬 스토리지, 세션 스토리지)

1. 쿠키 (Cookie) 클라이언트가 서버에 방문한 정보를 클라이언트 단에 저장하는 작은 파일을 의미한다. 클라이언트의 브라우저 메모리 혹은 하드디스크에 저장이 된다. (↔ 세션) 매번 서버에 전송되므로 크기가 클 경우 서버에 부담이 갈 수 있다. SameSite 옵션이 Strict가 아닌 경우, 다른 도메인에서 요청할 때도 자동 전송되는 위험성이 있다. (CSRF 취약) 대략 4KB까지의 데이터를 저장할 수 있으며 유효 기간이 존재한다. 대부분의 브라우저가 지원한다. ※ 다른 오리진(= 프로토콜 + 도메인 + 포트) or 다른 도메인에 대한 이슈 1. 브라우저의 CORS 정책은 다른 오리진에 대한 요청을 막음 : 브라우저는 다른 오리진에 요청을 보낼 때 요청의 Origin 헤더에 자신의 오리진을 실어..

[Web] HTTPS, 대칭키 및 비대칭키(공개키) 암호화

1. HTTPS 프로토콜 HTTP(HyperText Transfer Protocol)란 인터넷 상에서 통신을 할 때 데이터를 주고받는 형식(프로토콜)들 중 하나를 의미한다. 각각의 HTTP 요청과 HTTP 응답은 정해진 형식이 존재한다. 클라이언트가 HTTP 요청의 형식으로 서버에게 요청을 보내면 서버가 그 요청을 HTTP 요청의 형식에 맞게 해독을 하고, 이에 대한 응답을 HTTP 응답의 형식으로 클라이언트에게 보내면 클라이언트가 그 응답을 HTTP 응답의 형식에 맞게 해독을 하는 것이다. HTTPS의 S는 Secure의 약자로, HTTP의 보안 기능을 한층 더 강화한 프로토콜을 의미한다. 요즘 대부분의 신뢰할 만한 사이트들은 HTTPS 프로토콜을 사용하고 있다. HTTPS가 제공하는 대표적인 보안 기..

[Web] PRG (Post-Redirect-Get) 패턴

1. PRG (Post-Redirect-Get) 패턴이란? PRG(Post-Redirect-Get) 패턴은 웹 개발 시에 권장되는 디자인 패턴 중 하나로, HTTP POST 요청에 대한 응답이 또 다른 URL로의 GET 요청을 위한 리다이렉트(응답 코드가 3XX)여야 한다는 것을 의미한다. 즉, 일반적인 HTTP GET 요청처럼 HTTP POST 요청에 대한 응답이 어떠한 페이지를 직접 반환하는 것은 권장되지 않는 위험한 방식이라는 것이다. 2. PRG 패턴의 필요성 PRG 패턴을 사용하지 않는다면, 대표적으로 다음과 같은 두 가지의 문제점이 발생할 수 있다. 첫째, 새로고침으로 인해 동일한 HTTP POST 요청이 중복으로 발생하여 의도치 않은 결과를 낳을 수 있다. 만약 HTTP POST 요청에 대한..

[Web] DNS (Domain Name System)

인터넷에 연결된 각각의 컴퓨터 등의 장치를 호스트(host)라고 부른다. 그리고 전 세계의 호스트들은 서로 통신을 하기 위해 반드시 IP 주소를 가지고 있어야 한다. 초창기에는 이러한 IP 주소를 이용하여 다른 호스트에 접속하는 것만으로도 큰 혁명이었다. 그러나 점점 IP 주소를 기억해서 사용하는 것에 대한 불만이 쏟아져 나오기 시작했고, 이로 인해 DNS(Domain Name System)라는 것이 탄생하였다. DNS 기술의 핵심은 숫자로 되어 있어서 기억하기 어려운 IP 주소에 이름을 붙여주는 것이며, 이를 위해서는 도메인 이름과 IP 주소 사이의 맵핑 정보들을 기록하고 있는 DNS 서버가 필요하다. 이번 포스팅을 통해 DNS 기술에 대해 한 번 알아보도록 하자. 1. hosts 파일 각 운영체제는 ..

[Web] 공유기 - IP 주소, NAT, 포트 포워딩, DHCP 등

인터넷에 연결되어 있는 모든 컴퓨터들은 통신을 위해 자신만의 IP 주소를 가지고 있어야 한다. 그러나 IPv4 체계에 따르면 IP 주소는 0.0.0.0 ~ 255.255.255.255의 범위로 표현되므로 대략 40억 개 정도의 주소만 표현할 수 있다. 현대와 같이 IT 기술의 진보가 급속도로 진행되는 상황에서 40억 개는 결코 많은 수가 아니며, 오히려 부족하다고 말할 수 있다. 그래서 훨씬 더 많은 주소를 표현할 수 있는 IPv6 체계를 새로 도입하는 중이지만, 체계를 완전히 바꾸는 건 전환 비용이 막대하기 때문에 우선은 IPv4 체계의 주소를 아껴 쓸 줄 아는 게 중요하다. 이러한 목적으로 등장한 것이 바로 많은 사람들에게 익숙한 공유기(라우터의 일종)라는 장치이다. 이번 포스팅에서는 공유기와 관련된..

[Web] XSS와 CSRF (Cross Site Scripting and Cross Site Request Forgery)

1. XSS (Cross Site Scripting) 1-1. 의미 웹사이트에 악의적 스크립트를 삽입하여 쿠키, 개인정보 등을 빼돌리는 해킹 기법이다. 간단한 예시로, 게시글을 작성할 때 와 같은 JavaScript를 삽입하여 태그 안에 작성한 악의적 목적의 코드가 실행되게끔 하는 것을 들 수 있다. 코드를 어떻게 작성하느냐에 따라 쿠키나 개인정보 등을 빼돌릴 수도 있고, 특정 웹사이트로 이동하도록 할 수도 있고, 그 밖의 다른 동작을 수행하게끔 할 수도 있다. 주로 중요한 데이터를 다른 사이트로 빼돌리기 위해 사용하기 때문에 'Cross Site'라는 이름이 붙게 되었다. 1-2. 공격 과정 예시 ① 스크립트 삽입에 취약한 웹사이트를 파악한다. ② 웹사이트에 방문자의 쿠키를 빼돌리는 악성 스크립트를 삽..

[Web] 쿠키와 세션 (Cookie and Session)

세션과 쿠키는 둘 다 사용자가 특정 서버의 웹사이트에 방문했던 정보를 기억하고 해당 서버가 이를 재사용하기 위한 수단이다. 각각의 특성을 한 번 간단하게 알아보고 넘어가자. 1. HTTP 프로토콜의 특성 전 세계의 사람들은 인터넷이 연결된 환경 하에서 웹이라는 통로로 서로 통신한다. 이때 서로 다른 특성을 가진 기기들이 통신을 할 수 있도록 미리 합의하여 정해놓은 통신 규약을 프로토콜이라 부르며, HTTP는 웹에서 사용하는 프로토콜이다. 쿠키와 세션을 알아보기에 앞서, HTTP 프로토콜의 다음 두 가지의 특성을 짚고 넘어가자. 특성 설명 Connectionless 클라이언트가 요청을 보내고 서버가 응답하면 그 즉시 해당 연결은 종료된다. Stateless 연결이 끊어지면 그 전의 상태 정보는 유지되지 않..