no image
CSRF & XSS
CSRFCross Site Request Forgery attack : 크로스 사이트 요청 위조 공격사용자가 자신의 의지와는 무관하게 침입자가 의도한 행위를 서버에 요청하게 만드는 공격이다.인증된 사용자가 웹 애플리케이션에 특정 요청을 보내도록 유도하는 공격 행위생성된 요청이 사용자의 동의를 받았는지 확인할 수 없는 웹 애플리케이션의 CSRF 취약점을 이용공격자의 요청이 사용자의 요청인 것처럼 속이는 공격 방식사용자가 인증한 세션에서 웹 애플리케이션이 정상적인 요청과 비정상적인 요청을 구분하지 못하는 점을 악용웹 애플리케이션이 사용자의 요청이 실제 사용자가 전송한 것인지 확인하지 않는 경우 발생더보기1. 침입자는 서버로 넘어가는 자금 전송에 대한 요청을 조작하려고 한다.2. 침입자는 하이퍼링크에 자금 전..
2024.05.27
[CS Web] Authentication & Authorization
인증 (Authentication)ID와 비밀번호로 사용자 신원을 확인한다. 각 서비스에 사용자가 카카오계정으로 로그인할 수 있는 기능을 지원한다. 서비스에서 각 사용자가 식별할 수 있는 고유한 회원번호를 제공한다. 인가 (Authorization)사용자 개인정보와 같은 자원(Resource)에 대한 접근 권한을 획득한다. 사용자 동의를 바탕으로 사용자 정보나 기능에 대한 접근 권한을 토큰 형태로 서비스에 부여한다. * 토큰사용자의 로그인 인증 및 인가 정보를 담은 권한 증명으로, 소셜미디어 API 호출에 사용된다. 카카오의 경우, OAuth 2.0 표준 규격에 따라 Access token, Refresh token 두 종류의 토큰을 발급한다. Access token사용자 인증, 카카오 API 호출 권한..
2024.04.23
no image
[CS Web] OAuth 2.0
OAuth 2.0Open Authorization 2.0은 웹 및 애플리케이션 인증 및 권한 부여(인가)를 위한 개방형 표준 프로토콜이다. 이 프로토콜에서는 third-party 애플리케이션이 사용자의 리소스에 접근하기 위한 절차를 정의하고 서비스 제공자의 API를 사용할 수 있는 권한을 부여한다. 대표적으로 네이버, 구글, 카카오 로그인 등 소셜 미디어 간편 로그인이 있다. OAuth2.0 역할Resource Owner리소스에 대한 액세스 권한을 부여하는 사용자(엔티티)로, 클라이언트 인증(Authorize)하는 역할을 수행한다. 보통 사용자를 말한다. (사용자 != Client 아님)ClientOAuth 2.0을 사용해 리소스에 접근하려는 third-party 애플리케이션이나 서비스를 말한다. 보통 ..
2024.04.23
no image
[CS Web] Cookie & Session
Cookie클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다쿠키는 사용자가 따로 요청하지 않아도 브라우저가 Request시 Request Header를 넣어서 자동으로 서버에 전송한다 쿠키의 구성 요소이름값유효시간도메인경로 쿠키의 동작 방식1. 클라이언트가 페이지를 요청 (사용자가 웹사이트에 접근)2. 웹 서버에서 쿠키를 생성3. 생성한 쿠키를 HTTP 헤더에 포함 시켜 클라이언트에 응답4. 클라이언트가 쿠키를 가지고 있다가 다시 서버에 요청할 때 쿠키를 함께 전송5. 동일한 웹사이트 재방문 시 클라이언트 PC에 해당 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송 쿠키 ..
2024.04.11
no image
[CS Web] HTTP Status Code
웹 브라우저 주소창에 https://www.naver.com을 입력하고 엔터를 누르면 웹 클라이언트와 웹 서버 사이에 HTTP 연결이 맺어지고 웹 클라이언트는 웹 서버에 HTTP 요청 메시지를 보낸다. 웹 서버는 요청에 따른 처리를 진행한 후, 그 결과를 웹 클라이언트에 HTTP 응답 메시지로 보내는데, 이러한 요청과 응답 과정이 있어서 우리가 웹을 사용할 수 있는 것이다. 서버에서의 처리 결과는 응답 메시지의 상태 라인에 있는 상태 코드(Status code)를 보고 파악할 수 있는데, 첫 번째 숫자는 HTTP 응답의 종류를 구분하는데 사용하며, 나머지 2개의 숫자는 세부적인 응답 내용 구분을 위한 번호이다. 현재 100 ~ 500번 대의 상태 코드가 정의되어 있고, 첫 번째 숫자를 기준으로 상태 코드..
2024.04.11
no image
[CS Web] HTTP Request Method
HTTP 요청 방법GETPUTPOSTDELETEPATCHHEADOPTIONSTRACECONNECT DELETE지정된 리소스 삭제비안정성을 가지므로, DELETE 요청 시 클라이언트를 인증/인가에 필요한 정보들을 함께 보내야함URL query string parameter인증에 필요한 username, id, password 등 민감 정보가 그대로 노출될 수 있으므로 보안상 좋진 않다.server log에 password가 평문 그대로 저장될 수 있다.브라우저 히스토리에 url이 저장될 수 있다.Google Analytics 같은 애플리케이션에 Referer 헤더들로 URL이 전달되며, 민감정보가 그대로 드러날 수 있다.Request Body parameter민감 정보가 URL에 직접 노출되지 않는다는 점..
2024.04.11
no image
[CS Web] REST
REST API다양한 테스크를 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신하기 위해 등장했다. 여기서 REST란, Representational State Transfer의 약자로, 자원을 이름으로 구분해 해당 자원의 상태를 주고받는 모든 것을 말하며, API는 Application Programming Interface의 약자로, 컴퓨터의 기능을 실행시키거나 어떠한 응용프로그램에서 데이터를 주고 받기 위한 방법을 말한다. => 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스이다. 따라서, REST API는 REST를 기반으로 만들어진 API로, 클라이언트와 서버간의 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교..
2024.04.11
no image
[CS WEB] Web Server & WAS
Web Server클라이언트로부터 HTTP 프로토콜 요청을 받아 HTML 문서와 같은 정적 웹 페이지를 응답해주는 소프트웨어정적이란, HTML, CSS, Java Script, 이미지, 파일 등 즉시 응답이 가능한 컨텐츠들을 말한다.대표적으로 Apache, Ngingx가 있다.    WASWeb Application Server의 준말이며, Web Server + Web Container를 말한다.WAS를 그냥 Web Container, Servlet Container라고도 한다.여기서 Web Container란 JSP, Servlet을 실행시킬 수 있는 소프트웨어를 말한다. WAS는 Web Server 단독으로는 처리할 수 없는 DB 조회나 다양한 로직 처리가 필요한 동적 컨텐츠를 제공한다.브라우저에게..
2024.04.11