CSRF (Cross-Site Request Forgery) 공격과 방어
CSRF 란? 인터넷 사용자(희생자)가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 만드는 공격입니다. 쿠키 + 세션 해커가 CSRF 공격을 시도하기 위해선 전제조건이 필요합니다. 쿠키 세션은 전제조건에 해당되므로 이 내용을 이해하면 후의 글을 이해하는데 도움이 될 것 입니다. 사용자가 특정 서버에 로그인하면 일반적으로 다음과 같은 작업들이 수행됩니다. 서버는 로그인 시 인증된 사용자의 정보를 세션(session)에 저장하고, 이를 찾을 수 있는 sessionID를 만듭니다. 서버는 전달된 세션 정보를 클라이언트(브라우저)가 사용할 수 있도록 sessionID를 Set-Cookie 헤더에 담아서 전달합니다. 클라이언트(브라우저)는 전달된 session..
DOM 기반(DOM based) XSS(Cross-Site Scripting) 공격과 방어
XSS (Cross-Site Scripting) 이란? 가장 널리 알려진 웹 보안 취약점 중 하나입니다. 악의적인 사용자가 공격하려는 사이트에 악성 스크립트를 삽입할 수 있는 보안 취약점입니다. XSS를 통해 악성 코드를 제어하는 사이트로 리다이렉트 하거나, 사용자의 쿠키를 탈취하여 세션 하이재킹 공격을 할 수 있습니다. 대표적인 공격 방식은 다음과 같습니다. Stored XSS Reflected XSS DOM Based XSS DOM based XSS DOM 기반 XSS 공격은 보안에 취약한 JavaScript 코드로 DOM 객체를 제어하는 과정에서 발생합니다. DOM based XSS 공격 시나리오 악의적인 사용자가 보안이 취약한 사이트를 발견했습니다. 보안이 취약한 웹 페이지에서 악성 스크립트가..
저장형(Stored) XSS(Cross-Site Scripting) 공격과 방어
XSS (Cross-Site Scripting) 이란? 가장 널리 알려진 웹 보안 취약점 중 하나입니다. 악의적인 사용자가 공격하려는 사이트에 악성 스크립트를 삽입할 수 있는 보안 취약점입니다. XSS를 통해 악성 코드를 제어하는 사이트로 리다이렉트 하거나, 사용자의 쿠키를 탈취하여 세션 하이재킹 공격을 할 수 있습니다. 대표적인 공격 방식은 다음과 같습니다. Stored XSS Reflected XSS DOM Based XSS Stored XSS 저장형 XSS 공격은 보안이 취약한 서버에 악의적인 사용자가 악성 스크립트를 저장함으로써 발생합니다. 비정상적인 방법이 아니라 서버에서 제공하는 게시판, 사용자 프로필에 악의적으로 동작하는 스크립트가 그대로 저장된 후 클라이언트의 브라우저로 전달되어 문제가 발..
반사형(Reflected) XSS(Cross-Site Scripting) 공격과 방어
XSS (Cross-Site Scripting) 이란? 가장 널리 알려진 웹 보안 취약점 중 하나입니다. 악의적인 사용자가 공격하려는 사이트에 악성 스크립트를 삽입할 수 있는 보안 취약점입니다. XSS를 통해 악성 코드를 제어하는 사이트로 리다이렉트 하거나, 사용자의 쿠키를 탈취하여 세션 하이재킹 공격을 할 수 있습니다. 대표적인 공격 방식은 다음과 같습니다. Stored XSS Reflected XSS DOM Based XSS Reflected XSS 악의적인 사용자가 악성 스크립트가 담긴 URL을 만들어 일반 사용자에게 전달하는 경우입니다. 악의적인 사용자는 URL 주소 뒤에 붙은 쿼리에 악성 스크립트를 작성하여 전달합니다. 후에 공부할 Stored XSS 는 데이터베이스에 스크립트가 저장되었지만,..
토큰을 어디에 저장해야할까요?
https://tecoble.techcourse.co.kr/post/2020-08-31-where_to_store_token/ 토큰을 어디에 저장할까? … tecoble.techcourse.co.kr 위 글을 공부한 내용입니다. 웹 서비스를 제공할 때 인증과 인가는 기본적으로 구현해야 하는 기능 중 하나입니다. 이를 구현하기 위해 쿠키/세션을 사용할 수도 있고 토큰을 이용할 수도 있습니다. 만약 토큰을 이용한다면 토큰을 어디에 저장해야할 지 생각해보아야합니다. 우선 쿠키와 세션에 대해 알아보도록 합시다. 쿠키 HTTP 통신의 Stateless(무상태성)을 보완해주기 위해 나온 것으로 서버가 클라이언트에 값을 저장하고, 읽을 수 있도록 해줍니다. 서버에서 접근할 수있고, 자동으로 요청에 포함된다는 점이 중..
Transfer-Encoding: Chunked
https://withbundo.blogspot.com/2017/08/http-20-http-ii-transfer-encoding.html [HTTP 프로토콜 강좌]#20 HTTP 일반 헤더 II - Transfer-Encoding, Upgrade, Warning, Trailer 이전 시간에 이어 오늘은 General 헤더의 마지막 시간이다. 오늘은 포스팅 글 제목에 있듯이 4개의 헤더를 다룬다. Transfer-Encoding Upgrade Warning Trailer 1. Transfer-Encodi... withbundo.blogspot.com 위 글에서 소개하는 4가지의 헤더중 Transfer Encoding 에 대해 공부한 내용입니다. Transfer-Encoding Transfer-Encodi..
REST란? REST API 와 RESTful API
REST 란? REST의 정의 자원을 표현으로 구분해 정보를 주고 받는 모든 것을 의미합니다. 이게 무슨 말일까.. 이해가 가지 않았습니다. 자원(Resource) : 해당 소프트웨어가 관리하는 모든 것 (그림, 데이터) 대부분의 글에 위와 같이 되어있는데 정확하게는 이해를 못했습니다. 그래서 제 생각을 정리합니다. http://torang.co.kr/user/107 만약 클라이언트가 다음과 URI로 요청을 보낼 수 있을 때 서버 쪽에서는 응답을 위해 DB에 user 에 대한 데이터를 저장하고 있을 겁니다. 이를 자원(Resource) 라고 생각하기로 했습니다. 그런데 이 부분과는 관련이 없지만 URI 와 URL가 뭐가 다른지에 대해 헷갈리기 시작했습니다. 😂.. 우선 URI 가 URL 을 포괄하는 용어..
HTTP Cache
https://opentutorials.org/module/3830 HTTP Cache 수업소개 이 수업은 웹의 성능을 향상시키는 핵심 메커니즘은 HTTP Cache 를 다루는 수업입니다. 수업대상 이 수업은 HTTP에 대한 기본적인 이해를 요구합니다. HTTP를 모르시는 분은 HTTP 수업을 먼 opentutorials.org 생활 코딩의 HTTP Cache 영상을 보고 쓴 글입니다. Cache 데이터의 전송 속도를 높이기 위해 사용하는 기법, 이미 다운로드 받은 파일을 컴퓨터에 저장했다가 같은 주소로 접속했을때 캐시해둔 파일을 사용한다면 네트워크를 통하지 않아도 되므로 네트워크로 인한 지연 현상이 발생하지 않습니다. 하지만 캐시를 사용했을 때 발생할 수 있는 문제점은 웹사이트가 개편되었음에도 사용자..
전자서명과 CA
https://www.getoutsidedoor.com/2021/02/13/ssl-tls-%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C/ SSL/TLS 에 대해서 - Real Insight Comes From Fixing Error 이번 포스팅에서는 SSL/TLS 프로토콜이 어떤 방식으로 동작하며 왜 이런 프로토콜이 등장하였는지 그 배경에 대해서 살펴본다. 실제로 SSL/TLS 그리고 이것을 사용하여 만들어진 HTTPS 프로토콜이 코 www.getoutsidedoor.com 위 글을 참고하여 공부한 내용입니다. 자세한 내용은 위 블로그를 참고해주세요. 전자서명 일반적으로 문서에 서명을 한다고하면 해당 문서를 읽어보았고 동의한다는 뜻으로 서명을 하게 된다. 디지털 세계에서는 서명은 해..
HTTP 와 HTTPS
HTTP(HyperText Transfer Protocol) 하이퍼텍스트(HyperText)를 전송(Transfer)하기 위해 사용되는 통신 규약(Protocol)입니다. 또한 인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약 이라고도 할 수 있습니다. HTTP 서버는 기본 포트인 80번 포트에서 서비스 대기 중이며, 클라이언트(웹 브라우저)가 TCP 80 포트를 사용해 연결하면 서버는 요청에 응답하면서 자료를 전송합니다. HTTP는 정보를 텍스트로 주고 받기 때문에 네트워크에서 전송 신호를 인터셉트 하는 경우 원하지 않는 데이터 유출이 발생할 수 있습니다. 이러한 보안 취약점을 해결하기 위한 프로토콜이 HTTP에 S(Secure Socket)가 추가된 HTTPS입니다. HTTPS ..