목록웹 (9)
dev-sohee 님의 블로그
'웹 보안의 취약점 1탄 : XSS, CSRF 공격기법'에서 공격기법에 대해 알아봤으니 이번엔 방어기법 중 하나인 CORS에 대해 알아보겠습니다. # CORSCORS는 한국어로 직역하면 '교차 출처 리소스 공유'라고 해석할 수 있습니다. 여기서 '교차 출처(Cross-Origin)'이란 '다른 출처'를 의미합니다. 즉, 도메인이 다른 서버끼리 리소스를 주고 받을 때 보안을 위해 설정된 정책이라고 생각하시면 됩니다. 예를 들어, 웹 사이트 A가 API 서버에서 데이터를 가져오려 할 때, API 서버에서 CORS 허용 설정이 되어 있지 않으면 웹 브라우저에서 API 접근이 거부될 수 있습니다. CORS 설정은 API 서버에서 HTTP 응답 헤더에 "Access-Control-Allow-Origin" 항목..
자바 웹 개발을 하다보면, 공통적으로 처리해야 할 작업들이 많습니다. 예를 들어 로그인 관련(세션 관리), 권한 체크, XSS 방어, 페이지 인코딩 변환 등이 있습니다. 공통업무에 관련된 코드를 모든 페이지 마다 작성한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도 있으며, 소스 관리도 힘들어질 것입니다. 그래서 공통된 부분은 따로 관리하는 것이 좋습니다. 이러한 공통 업무를 프로그램 흐름의 앞, 중간, 뒤에 추가하여 자동으로 처리할 수 있는 방법이 있는데 바로 Filter, AOP, Interceptor, Dispatcher Servlet입니다. * Dispatcher Servlet* Filter* AOP(Aspect-Oriented Programming)* Int..
웹의 가장 큰 장점 중 하나는 인터넷 연결만 있으면 언제 어디서나 접근할 수 있다는 것입니다. 하지만 이 말은 곧 그만큼 보안이 취약하다는 뜻이기도 합니다. 당장 브라우저의 개발자 도구만 열어도 DOM이 어떻게 작성되어 있는지, 어떤 서버와 통신하는지 등의 각종 정보들을 열람할 수 있고 쿠키 값도 변경하여 클라이언트의 요청을 위변조할 수 있습니다. 오늘은 웹 보안 취약점을 이용한 XSS, CSRF 공격 기법과 웹 보안 기법 중 하나인 CORS에 대해 알아보겠습니다.* XSS(Cross Site Scripting)* CSRF(Cross Site Request Forgery) # XSSXSS란 Cross Site Scripting의 약자로 CSS라고 하는 것이 맞지만 CSS가 이미 Cascading Styl..
웹 어플리케이션 배포는 개발자에게 매우 중요한 단계입니다. 다양한 환경과 서버 구성 요소들, 배포의 자동화, 어플리케이션의 복잡성 등의 영향을 받아 어플리케이션 배포 과정은 복잡할 수 있지만 이를 쉽고 간편하게 처리할 수 있도록 도와주는 도구가 바로 War(Web Application Archive)입니다. 이 글에서는 WAR의 기본 개념과 구조에 대해 자세히 살펴보겠습니다.* WAR란?* WAR의 구조 # WAR란?War(Web Application Archive)는 웹 서버 또는 서블릿 컨테이너에서 실행될 수 있도록 어플리케이션의 모든 구성 요소를 하나의 파일로 묶어 제공하는 파일 형식입니다. WAR 파일은 웹 어플리케이션의 클래스 파일, JSP 파일, 서블릿, 정적 리소스(HTML, CSS, Jav..
이벤트 기반 아키텍처(Event-driven architecture), 라는 단어의 뜻이 유추가 되시나요?개발자에게 "이벤트(Event)"란, 시스템에서 발생하는 중요한 상태 변화나 동작을 의미합니다. 그렇다면 "아키텍처(Architecture)"는 무슨 뜻일까요? 아키텍처란, 구성 요소 간의 관계 및 시스템 외부 환경과의 관계를 설계화한 것, 쉽게 말해 서비스가 어떻게 구성되며 어떻게 동작이 되는지에 대한 설계도라고 생각하시면 되겠습니다.그렇다면 이벤트 기반 아키텍처(EDA)는 이벤트를 기반으로 한 아키텍처, 즉 시스템에서 발생하는 이벤트를 중심으로 시스템이 동작하고 처리되는 구조와 흐름에 대한 설계라고 볼 수 있겠습니다.이 글을 읽고 나면 누구나 EDA를 이해할 수 있도록 EDA에 대해 쉽게 설명해..
'웹 브라우저에서 Enter를 누른 후 일어나는 모든 일들 낱낱이 파헤치기'(https://dev-sohee.tistory.com/12)에서 예를 들어 우리가 웹 브라우저의 주소창에 'https://www.naver.com'을 입력하고 Enter 를 누르면 어떤 일들이 일어나는지에 대해 알아봤습니다. 그 중 클라이언트가 웹 서버에 HTTP 요청을 보내고 응답을 받는 동작이 반복적으로 이루어진다는 내용이 있었는데 이 글에서는 이때의 응답 객체 중 HTTP 상태 코드에 대해 알아보겠습니다. 서버에서의 처리 결과는 응답 메시지의 상태 라인에 있는 상태 코드(status code)를 보고 파악할 수 있습니다. 상태 코드는 세 자리 숫자로 되어 있는데 첫 번째 숫자는 HTTP 응답의 종류를 구분하는 데 사용하며..
1989년, 유럽 입자 물리 연구소(CERN)의 영국 물리학자 팀 버너스 리(Tim Berners Lee)가 연구원 간에 아이디어를 주고받을 때 항상 전자 우편이나 파일을 통해 주고받는 것이 비효율적이라고 생각하여 제안한 웹은 공통된 공간에 각자의 정보를 올리고 관리할 수 있는 일종의 정보 관리 시스템에서 시작되었습니다. 버너스 리는 최초의 웹 브라우저인 "WWW(World Wide Web)"을 개발했습니다. 이 브라우저는 웹 페이지를 볼 수 있는 것뿐만 아니라, 웹 페이지를 작성할 수 있는 편집 기능도 제공했습니다. 1991년, World Wide Web이 CERN 외부의 전 세계 사용자들에게 공개되면서 웹은 빠르게 확산되었고 1994년, 팀 버너스 리가 World Wide Web 컨소시엄(W3C)을..
백엔드 개발자라면 웹 브라우저에서 검색창에 문자열을 입력 후 'Enter'키를 눌렀을 때 백엔드에서 발생하는 일련의 과정들을 모두 알고 있어야 한다고 생각합니다. 훗날 서버에 문제가 발생하거나 성능을 보완해야 하는 경우를 대비해야 하기 때문입니다. 먼저, 사용자가 구글 검색창에서 'Backend Developer'를 검색한다고 가정하겠습니다. 이때, 사용자가 검색 엔진에 입력하는 텍스트를 '쿼리'라고 합니다. 사용자가 브라우저 검색창에 쿼리를 입력하고 엔터를 누르면 브라우저는 ① URL을 구성합니다. 예를 들어, 'Backend Developer'를 검색한 경우에는 'https://www.searchengine.com/search?q= Backend Developer'와 같은 URL이 생성됩니다. ..