CORS란? CORS는 Cross-Origin Resource Sharing 의 약자로, 다른 자원들을 공유한다는 뜻이다. 웹페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인(origin) 밖의 다른 도메인(cross-origin) 으로부터 요청할 수 있게 허용하는 구조이다. 다시말하면, 한 출처에 있는 자원에서 다른 출처에 있는 자원에 접근하도록 하는 개념이다. 앞서 말한 Origin은 특정 페이지에 접근할 때 사용되는 프로토콜, 도메인(host), 포트를 말한다. 그래서 Same-Origin이란 프로토콜, 도메인, 포트가 동일하다는 의미를 가진다. 만일 한가지라도 다르다면 Cross-Origin이다. HTTP 요청에 대해서 HTML은 Cross-Origin 정책을 따르기에 기본적으로 Cross..
들어가기 앞서.. API 서버에 대해 알아보기 전, 우선적으로 API에 대해 알아봐야한다. 평소 API란 말을 많이 들어왔고, 사용도 해보았지만 제대로 개념을 알지 못했었다. 이번 기회로 간단하게 정리를 해보려고 한다. API? API는 Application Programming Interface의 약자로, 응용 프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 다시말하면, 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘이다. 예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어있다고 할 때, 유저가 날씨를 어플을 통해 확인하기 위해서는 날씨 어플이 API를 통해 기상청의 소..
Remember Me 란? JSESSIONID가 만료되거나 Cookie가 없어도 웹 브라우저가 종료된 이후에도 어플리케이션이 사용자를 기억하는 기능을 말한다. 쉽게 말해 자동 로그인 기능에 사용하는 것이다. * JSESSIONID ? - Tomcat 컨테이너에서 세션을 유지하기 위해 발급하는 키로, HTTP 프로토콜은 stateless하다. 요청시마다 새로운 연결이 생성되고, 응답 후에 연결은 끊기게 되므로 상태를 유지할 수 없게 된다. 예를 들어, 사용자가 페이지에서 로그인할 때, 하단에 '로그인 유지' 체크박스를 체크한 후 로그인 하면 Remember Me 기능을 활성화 시키는 경우이다. 해당 기능을 활성화 시킬 경우, 서버에서는 Remember Me 쿠키를 생성하게 된다. 그 후, 로그인을 할 때마..
OAuth 란? OAuth는 Open Authorization의 약자로, 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 API이다. 해당 기능을 통해 로그인을 처리하면 사용자 관리에 대한 부담을 줄일 수 있다. 쉽게말해서, 서비스를 제공하는 업체들이 각자 다른 방식으로 로그인하지 않도록 공통의 인증 방식을 제공하는 것이다. OAuth 등장 배경 우리가 개발하는 서비스를 이용하여 사용자를 대신해 구글, 네이버 등에 접근하여 글을 남기거나, 일정 등록 등과 같은 기능을 만들 수 있다. 만약 OAuth가 없었다면 우리는 유저의 구글 또는 네이버의 ID, PW를 직접 제공 ..
UserDetails 란? Spring Security에서 사용자의 정보를 담는 인터페이스이다. Spring Security에서 사용자의 정보를 불러오기 위해서 구현해야 하는 인터페이스로, 오버라이드 메소드들은 아래와 같다. 메소드 return 설명 기본값 getAutorities() Collection
CSRF란 무엇인가? CSRF는 Cross Site Request Forgery의 약자로, 사이트간 요청 위조를 말하는데 웹 취약점 공격 중 하나이다. 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위 (데이터 수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격이다. CSRF 동작 원리 및 순서 우선 CSRF에 당하는 조건은 아래와 같다. 사용자는 보안이 취약한 서버로부터 이미 로그인이 되어있는 상태여야 한다. 쿠키 기반의 서버 세션 정보를 획득할 수 있어야 한다. 공격자는 서버를 공격하기 위한 요청 방법에 대해 미리 파악하고 있어야 한다. 만일 위의 조건들이 만족된다면 다음과 같은 순서로 CSRF 공격을 당할 수 있다. 사용자는 보안이 취약한 서버에 로그인한다. 서버에 저장된 세션 정보..