브라우저에서 자바스크립트로 할 수 있는 것
AJAX
요청을 통해 API
호출DOM
제어 => 브라우저에서 자바스크립트로 할 수 있는 것들이 많기 때문에 보안에 위협 받음
보안이 약한 클라이언트에 대한 웹 기반 공격이고 클라이언트가 서버를 신뢰해서 발생하는 이슈이다.
브라우저에서 기본적인 XSS 공격은 막혀있다.
서버가 클라이언트를 신뢰해서 발생하는 이슈이다.
서버는 인증 정보를 가지고 오면 신뢰
=> 유저가 인증 정보를 가진 체로 헤커의 링크를 누르면 해커는 인증 정보를 가로채서 서버에 요청
위와 같은 보안 위협을 예방하기 위해 브라우저에서 두 개 이상의 서버와 연결 되는 것을 예외적으로 허용된 출처의 자원만 공유하게 해주는 정책이다.
SPA
같은 고도화된 최근의 웹이 등장하게 되면서 여러 곳에 있는 리소스를 활용할 필요가 있어 나왔다.
처음 전송되는 리소스의 도메인과 다른 도메인으로부터 리소스가 요청될 경우 cross-origin HTTP요청에 의해 요청된다.
클라이언트가 POST 요청하면 서버에서 OPTIONS 메소드를 통해 자체적으로 먼저 허용된 사이트인지 확인
OPTIONS
메소드: preflight request
같은 서버로 판단하는 세가지 기준
1. 프로토콜 / 2. 도메인 / 3. 포트번호
node --inspect
node --inspect-brk // 사용자 코드 시작전 멈춤
에디터인 vscode
의 run debugger 활용 가능
Express.js
는 Node.js
환경에서 웹 서버 또는 API
서버를 제작하기 위해 사용되는 인기있는 프레임워크이다.
Express로 구현한 서버가 http 모듈로 작성한 서버와 다른 점
request에 필요한 기능을 더하거나 문제가 발견된 에러를 밖으로 걷어내는 역할
미들웨어를 사용하면 node.js만으로 구현한 서버에서는 다소 번거로울 수 있는 작업을 보다 쉽게 적용 가능
미들웨어를 사용하는 상황
모든 요청에 대해 URL
이나 메소드를 확인할 때
모든 요청에 동일한 미들웨어를 적용하려면 메소드 app.use
를 사용
POST 요청 등에 포함된 body(payload)를 구조화할 때(쉽게 얻어내고자 할 때)
body-parser
미들웨어를 사용하면 이 과정을 간단하게 처리 가능
모든 요청/응답에 CORS 헤더를 붙여야할 때
cors
미들웨어를 사용하면 이 과정을 간단하게 처리 가능
요청 헤더에 사용자 인증 정보가 담겨있는지 확인할 때