[학.알.17.실.개.기] 16장 HTTPS & 17장 OAuth

Chaejung·2022년 3월 6일
0
post-thumbnail

<이기곤, 학교에서 알려주지 않는 17가지 실무 개발 기술_문자열 인코딩부터 웹 필수 지식까지, 한빛미디어>

16장 HTTPS

HTTP가 익숙하여 HTTPS도 익숙하겠지라는 안일함에 읽었더니 도통 무슨 내용인지 이해할 수 없었다.
그래서 생활코딩의 HTTPS/SSL 강의를 두어개 정도 듣고 핵심만 정리하겠다.

  • HTTPS는 TLS 프로토콜 기반으로 하는 HTTP이다.
  • 인증서는 동작 방식이 꽤나 어렵다.
  • 인증서의 핵심 기능 두 가지
    1. 클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장
    1. TLS 통신에 사용할 공개키를 클라이언트에게 제공

p. 289 HTTPS를 소프트웨어 프레임워크에서 설정하는 것 보다는 Nginx나 아파치와 같은 웹 서버에서 설정하는 것이 안전합니다. 두 서버 모두 HTTP 및 HTTPS 표준에 부합하는 많은 기능을 가지고 있고 이미지와 같은 정적 파일을 자동으로 캐시 처리하는 등의 좋은 기능이 있기 때문입니다.


<엘리스 커리큘럼과 관련하여>

- 06주차 백엔드II>04 JWT, Nginx>01 Express.js와 MongoDB로 웹서비스 만들기3 중
  • Nginx란?

    • 최근 신규 프로젝트에서 가장 많이 채택되고 있는 웹 서버 SW
      (웹 서버 SW: HTTP 요청을 받아 파일이나 프로그램 실행 결과를 HTTP 응답으로 보내주는 SW)
  • Nginx를 사용하는 이유

    • Node.js는 다른 언어에 비해 기본적으로 HTTP 요청을 수신하고, 응답하는 기능이 이미 있어 스스로 동작 가능하지만,
    • 단독으로 production-level 서비스는 구축 불가
    • HTTPS 인증을 처리하기 위해
    • static file caching을 이용하기 위해
    • 여러 서버의 도메인을 관리하기 위해
  • Nginx + Node.js

    • Nginx의 reverse-proxy 기능을 사용해 연결 가능
    • Nginx가 HTTP 요청을 받아 설정된 내용에 해당하는 요청만 Node.js로 전달
    • HTTP 요청은 가장 처음에 Nginx에 도달, 그 이후 파일에 각각 할당

출처: 엘리스 강의 자료
[참고링크]

17장 OAuth

p. 294 OAuth 2.0 인가 절차

p. 302 전달받은 모든 데이터는 문자열 이스케이프 과정을 거쳐야 하고 브라우저의 경우 Content-Type을 항상 application/json으로 설정해야 악성 스크립트 실행을 방지할 수 있습니다.
크롬 브라우저의 경우 서버가 응답을 application/json으로 설정하면 다음과 같은 에러를 출력하며 스크립트 실행을 거부합니다.
Refused to execute script from '*' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type

https://stackoverflow.com/questions/40574159/refused-to-execute-script-strict-mime-type-checking-is-enabled

https://stackoverflow.com/questions/35553500/xmlhttprequest-cannot-load-xxx-no-access-control-allow-origin-header/35553666#35553666

이게 도대체 무슨 말이야...
위에서는 application/json으로 설정해야 악성 스크립트 실행을 방지할 수 있다면서 왜 실행을 거부한다는거지?


<엘리스 커리큘럼과 관련하여>

 - 06주차 백엔드II>04 JWT, Nginx>01 Express.js와 MongoDB로 웹서비스 만들기3 중
  • 인증과 인가의 차이
    • 인증은 사용자 판단을 하는 것(회원가입과 로그인)
    • 인가는 사용자에 대한 권한을 허락하는 것
profile
프론트엔드 기술 학습 및 공유를 활발하게 하기 위해 노력합니다.

0개의 댓글