목록웹서버 (7)
dev-sohee 님의 블로그
자바 웹 개발을 하다보면, 공통적으로 처리해야 할 작업들이 많습니다. 예를 들어 로그인 관련(세션 관리), 권한 체크, 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 응답의 종류를 구분하는 데 사용하며..
백엔드 개발자라면 웹 브라우저에서 검색창에 문자열을 입력 후 'Enter'키를 눌렀을 때 백엔드에서 발생하는 일련의 과정들을 모두 알고 있어야 한다고 생각합니다. 훗날 서버에 문제가 발생하거나 성능을 보완해야 하는 경우를 대비해야 하기 때문입니다. 먼저, 사용자가 구글 검색창에서 'Backend Developer'를 검색한다고 가정하겠습니다. 이때, 사용자가 검색 엔진에 입력하는 텍스트를 '쿼리'라고 합니다. 사용자가 브라우저 검색창에 쿼리를 입력하고 엔터를 누르면 브라우저는 ① URL을 구성합니다. 예를 들어, 'Backend Developer'를 검색한 경우에는 'https://www.searchengine.com/search?q= Backend Developer'와 같은 URL이 생성됩니다. ..
HTML은 웹페이지의 구조를 정의하는 웹을 위한 마크업 언어입니다. 모든 웹사이트의 가장 기본적인 구성 요소이기 때문에 웹 개발자로서 경력을 쌓고 싶다면 반드시 배워야 할 언어이기도 합니다. 이 글에서는 HTML, CSS, Javascript가 무엇인지와 이 셋의 관계에 대해서 다룰 예정입니다.* HTML* CSS* Javascript # HTML(Hyper Text Markup Language) : 웹페이지의 구조를 정의하는 웹을 위한 마크업 언어Hyper Text는 직역하면 'Text를 뛰어넘다'는 의미입니다. 그렇다면 Text를 뛰어넘는다는 건 또 무슨 뜻이야? 하는 분들도 계시겠지만 우리는 이미 Hyper Text를일상에서 너무나 자연스럽게 접하고 있습니다. 지금 이 글을 보고 있다는 것 자체가..