클라이언트와 서버, 그리고 2 Tier Architecture
*출처 codeStates
- 리소스를 사용하는 앱은 "클라이언트"라 부른다.
- 리소스가 존재하는 곳은 "서버"라 부른다.
- 리소스를 사용하는곳과 리소스가 존재하는곳을 분리해놓은것이 2 Tier Architecture 다른 말로는 클라이언트 서버 아키택쳐라고 부른다.
클라이언트와-서버 통신과 HTTP API
*출처 codeStates
- 웹 앱에서는 클라이언트와 서버가 서로 HTTP라는 프로토콜을 이용해 대화를 나눈다.
- API는 Application Programming Interface의 약자이며, Interface의 사전적 의미는 "의사소통이 가능"하도록 만들어진 "접점"을 의미한다. 이 의미에 따르면, 메뉴판도 인터페이스라고 볼 수 있다.
- 서버는 클라이언트에게 리소스를 잘 활용할 수 있도록 인터페이스(API)를 제공해줘야 한다.
- AJAX 는 Asynchronous Javascript and XML 의 약자로, 서버와 자유롭게 통신할수 있고, 페이지의 깜빡임 없이 seamless 하게 이용할수 있기때문에 필요하다. (XHR 과,javascript,dom을 이용)
브라우저는 항상 공격받고 있다.
- 브라우저 내에서 자바스크립트를 통해 api를 불러오거나, 다이나믹 하게 DOM을 제어하거나, 인증정보를 사용하게 될수도 있기때문에, 보안에 신경을 써야만 한다.
어떤 공격들이 있는가?
- XSS
- 웹 브라우저에서 사용자가 입력 할수 있는 input태그 등에 악의적으로 script를 작성하여 해당 웹을 이용하는 다른 이용자의 개인정보 및 쿠키정보를 탈취하거나, 악성코드 심기, 웹 페이지를 변형시키는 공격을 말한다.
- 이는 클라이언트가 서버를 신뢰 하기 때문에 발생한다고 볼수 있다.
- 이 공격은 user를 희생자로 삼는다.
- XSS공격은 어떤식으로 진행되는가
- CSRF
- 인터넷을 사용하는 유저가 자신의 의지와는 무관하게 공격자가 의도한 행위를 유저가 사용중인 특정한 웹사이트에게 요청하게 만드는 공격
- 해커가, 유저가 인증받은 권한을 탈취하여 해당유저만 요청할 수 있는 주요 기능들을 사용하게 되는것이다.
- 예를 들면, 나의 인스타그램 계정으로 광고성 글을 포스팅하는것을 들수 있다.
- CSRF 공격은 해커가 사용자의 컴퓨터를 감염시킨다기보다, 권한을 탈취해서 하는 공격이라고 보는것이 맞다.
CORS
*출처 https://developer.mozilla.org/ko/docs/Web/HTTP/CORS
- Cross-Origin Resource Sharing의 약어로, HTTP header를 사용하여 애플리케이션이 다른 origin(출처)의 리소스에 접근할수 있도록 하는 매커니즘을 뜻한다.
- 우리가 사용하게 될때에는 다른 origin에서 나의 리소스에 함부로 접근하지 못하게 하기위해서 사용된다.
- CORS 관련 내용은 이해하기도 많이 힘들고, 내용도 방대해서, 내가 보면서 가장 잘 이해할수 있었던 유튜브 링크를 첨부해 놓도록 하겠다.
- 우아한Tech 럿고의 CORS
참고할만한 문서들