XSS와 CSRF에 대해 알아보자 ❕ 1. XSS (Cross-Site Scripting)해커가 웹페이지에 악성 스크립트를 삽입하고, 사용자가 이를 실행하도록 하는 형태의 공격 기법 XSS(크로스 사이트 스크립팅)는 공격자가 사용자 브라우저에 악성 스크립트를 주입시켜 사용자의 세션을 가로채거나 사용자가 원치 않는 동작을 하도록 만드는 공격을 말한다.해커는 악성 스크립트를 실행한 사용자의 개인정보 및 쿠키정보를 탈취하고 악성코드 감염, 웹페이지 변조 등의 공격을 한다. XSS 공격은 주로 스크립트 언어와 취약한 코드를 대상으로, 웹 애플리케이션에서 사용자로부터 입력 받은 값을 제대로 검사하지 않아 발생되며 공격 대상이 주로 사용자이다. 대표적인 공격 방식Stored XSS (Persistent XSS..
Servlet과 JSP에 대해 공부해보자 ❕ 1. 개요Servlet과 JSP 모두 동적 콘텐츠를 만들거나 데이터 처리 수행을 위해 사용되는 웹 애플리케이션 개발 기술이다. 초기 정적 컨텐츠만 제공하던 웹 서버에서 동적 콘텐츠를 제공하기 위한 목적으로 *CGI가 등장했다. CGI 프로그램은 서버에서 프로세스 단위로 실행되기 때문에 사용자의 요청이 많아질수록 서버에 부하가 생겼고, 이에 따라 스레드 단위로 실행하여 서버 부하를 줄이고 성능을 개선한 Servlet이 등장했다. Servlet은 순수 Java 코드로만 이루어진 웹 서버용 클래스이다. 따라서 Servlet이 수정된다면 Java 코드를 다시 컴파일한 후 빌드해야 하는 번거로움이 있었고, 이런 한계를 보완하기 위해 JSP가 등장했다.(CGI → ..
JWT 토큰 인증 방식에 대해 알아보자 ❕ 오늘날 많은 서비스들이 JWT를 이용한 토큰 인증 방식으로 사용자들의 인증/인가를 확인한다. JWT란 무엇이며 어떤 방식으로 인증에 사용되는지 공부하려고 한다. 1. JWT (Json Web Token)Json Web Token의 약자로, 인증에 필요한 정보들을 암호화시킨 Json 토큰을 의미한다. JWT는 HTTP header에 담겨 전달된다. JWT는 Json 데이터를 Base64로 인코딩하여 직렬화하고, 토큰 내부는 위변조 방지를 위해 개인키(private key)를 통한 전자서명이 들어있다. 서버는 인증된 클라이언트에게 JWT토큰을 발급해주고, 클라이언트는 매 요청마다 JWT를 HTTP header에 담아 서버에게 전송한다. 그럼 서버는 개인키를 통..
인증 방식에 사용되는 Cookie, Session, Token에 대해 공부해보자 ❕ 서버가 클라이언트의 인증을 확인하는 방법으로 쿠키, 세션, 토큰 인증 방식이 사용된다. 오늘날 많은 서비스들은 토큰 인증 방식인 JWT를 이용하는데, 왜 이 방식을 사용하는지를 이해하기 위해 쿠키, 세션, 토큰 인증 방식에 대해 먼저 정리해보려고 한다. 1. Cookie (쿠키)쿠키는 클라이언트의 브라우저에 저장되는 작은 데이터 조각이다. 서버가 클라이언트에게 쿠키를 발급해주면, 클라이언트 브라우저에 쿠키가 저장된다. 이후 클라이언트가 서버에 리소스를 요청할 때마다 저장된 쿠키를 담아 보낸다.쿠키는 HTTP Header를 통해 전달되며, 브라우저에 Key-Value 형태의 문자열로 저장되어있다. 개발자 도구 > Ap..
웹 스토리지에 대해 공부해보자 😎 저장해야 할 데이터가 영구히 사용되지 않거나, 유실되도 괜찮다면 서버 단에 저장하는게 낭비일 수 있다. 이 경우 브라우저에 저장하는 방법인 웹 스토리지를 사용하면 된다. 웹 스토리지 객체는 쿠키와 다르게 서버로 전송되지 않으며, 브라우저 저장 공간에 key-value 형태로 저장된다. 구현하던 프로젝트에서 사용자마다 항목 리스트에서 특정 항목을 즐겨찾기 설정할 수 있었는데, 이 즐겨찾기 데이터는 다른 사용자들에게 공유되지 않을 값이고 유실되도 괜찮다고 생각해 웹 스토리지에 저장하는 방법을 택했다. 1. 개념웹 스토리지는 HTML5 이후 브라우저에서 제공하는 자바스크립트 API이며 `window` 객체를 상속받는다. 종류로는 LocalStorage와 SessionS..
Web Sever와 WAS의 개념을 공부하고 차이점을 알아보자 ❕ 1. Static & Dynamic 페이지 Static Pages (정적 페이지)변하지 않는 페이지DB에서 정보를 가져오거나 별도의 서버 처리를 하지 않고 사용자들에게 전달하는 페이지모든 사용자에게 동일한 페이지html, css, js, image 파일과 같이 컴퓨터에 저장된 파일들을 요청하는 페이지 Dynamic Pages (동적 페이지)변하는 페이지DB에서 정보를 가져오거나 서버에서 로직 처리 후 사용자들에게 보여줘야 하는 페이지사용자마다 다른 페이지 2. Web Server & WAS 개념Web Server클라이언트의 요청을 받아 정적인 컨텐츠(html, css, js 등)를 제공해주는 서버클라이언트가 동적인 컨텐츠를 요청했..
REST API에 대해 정리해보자 😁 1. APIAPI는 Application Programming Interface(애플리케이션 프로그래밍 인터페이스)의 약자로 어떠한 응용프로그램에서 데이터를 주고 받기 위한 방법 또는 규칙을 의미한다.클라이언트와 서버 간 데이터를 주고받을 때로 예로 들면, 어떠한 방식으로 정보를 요청해야 하는지 어떠한 데이터를 전달받을 지에 대한 규격을 말한다. 규격을 표준화해놓으면 여러 서비스에서도 쉽게 데이터를 요청하고 사용할 수 있다. 요즘 대형 플랫폼에서는 누구나 사용할 수 있게 만든 OpenAPI를 제공한다. 내가 만들고 싶은 사이트에 소셜 로그인 기능과 날씨 정보가 필요하다면 직접 구현하지 않아도 네이버, 카카오 등의 로그인 API과 기상청 API를 이용해 여러 서비..
웹 스토리지 객체 localStorage & sessionStorage를 공부해보자 😎저장해야 할 데이터가 잠시 동안만 사용하거나, 중요하지 않아 유실되도 괜찮다면 서버 단에 저장하는게 낭비일 수 있다. 이때 브라우저 내에 key-value 쌍을 저장하는 방법으로 웹 스토리지(localStorage, sessionStorage)가 있다. 쿠키와 다르게 웹 스토리지 객체는 서버로 전송되지 않으며, 서버의 자원을 요구하지 않는다. 1. 개념LocalStorage오리진이 같은 경우 데이터는 모든 탭과 창에서 공유해당 브라우저를 닫거나, 세션이 끝나더라도 데이터가 유지유효기간을 설정할 수 없어, 값이 소멸되지 않으므로 직접 삭제해 줘야 한다. SessionStorage현재 열린 탭 내에서만 데이터가 유지같..
CSRF와 XSS 개념에 대해 정리하자 ✌🏻 1. CSRF CSRF(Cross-Site Request Forgery)란 사이트 사이의 요청 위조이다.웹 어플리케이션의 취약점 중 하나로, 인터넷 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하도록 만드는 공격이다.공격자는 웹사이트가 신뢰하고 있는 사용자의 권한을 이용해 서버에 변조된 요청을 보내 공격한다. 공격 동작 공격자는 이메일이나 게시판에 CSRF 스크립트가 포함된 게시물을 업로드한다. 사용자는 공격자가 등록한 게시물을 열람한다.(img 태그 width, height가 0px으로 되어있거나, form내부 input태그가 hidden으로 설정되어있다면 알아차리지 못할 수 있다. 혹은 form 자동 submit 스립트..
CORS 개념에 대해 정리하고, Spring에서 CORS 설정을 해보자 🤔 실습에서 클라이언트는 포트 3000번, 서버는 8081번으로 실행했다. 클라이언트에서 서버로 API를 요청했는데 아래와 같이 브라우저 콘솔창에 에러가 뜨며 응답을 읽을 수 없었다. 읽어보면, CORS 정책 때문에 이 요청이 차단됐고 요청된 리소스에 `Access-Control-Allow-Origin` 헤더가 없다고 한다. 이 문제를 해결하기 위해 CORS의 개념을 공부하고 설정 방법을 정리하고자 한다. 1. CORS (Cross-Origin Resource Sharing) 1-1. CORS 개념 동일 출처 정책인 SOP(Same-Origin Policy)를 확장한 정책외부 리소스에 대한 접근을 제어하는 브라우저 메커니즘허용..