2021-04-03(Sat)
항목 | 내용 |
학습 날짜 | 2021-04-03(토) |
학습 시간 | 11:00~23:00 |
학습 범위 및 주제 | node.js, express.js |
학습 목표 | qr-checkin 코드를 분석할 수 있도록 학습한다. |
동료 학습 방법 | - |
상세 학습 내용
SOP(Same Origin Policy)란?
한 origin으로부터 로드된 document 또는 script가 다른 origin의 리소스와 상호작용 할 수 있는 방법을 제한하는 중요한 보안 메커니즘이다.
브라우저가 document를 받을 때는 그 document의 출처를 origin이라는 이름으로 저장해둔다.
그런데 이 때 document 내에서 외부리소스들과 상호작용 할 때 최초 파악한 origin과 다르다면, 별도의 제한을 두게 되는 것이다.
이 origin을 파악할 때는 scheme, Host, Port만 보고서 판단하게 된다.
https://www.example.com:443/path/page.html
이 origin이라고 치면, scheme(https
)과 Host(www.example.com
)와 port(443
)이 동일한 URL을 same origin으로 판별하게 되는 것이다. 이 때 port는 생략되어있을 때 scheme에 할당되는 포트번호를 기본으로 판별하게 된다.
왜 SOP가 중요할까?
해커가 악의적인 코드를 넣은 사이트를 유저가 열어버린 시나리오를 생각해보자.
만약 유저가 gmail 등에 접속해둔 상태라면 쿠키가 살아있을 것이고, 해커는 '악의적인 코드'를 통해 이 쿠키를 자동으로 첨부하여 구글 메일 서버에 유저의 메일 정보를 요청할 수 있다.
구글 메일 서버는 쿠키만 확인하고 메일 정보를 응답한다.
이제 SOP 유무에 따라 해커에게 메일정보가 넘어가는지 유무가 결정된다.
SOP가 없다면? 메일 정보가 그대로 해커에게 넘어간다.
SOP가 있다면? origin이 gmail이 아니라 해커의 사이트이므로 CORS 정책에 의해 메일 정보 read가 불가하다. 해커는 정보를 읽을 수 없다!
Cross-origin Network Access를 허용하는 방법
Cross-origin간의 통신이 필요한 경우는?
JSONP
NO!
모든 origin 대상으로 SOP를 무력화
CORS
YES!
허용할 origin만을
Access-Control-Allow-Origin
에 명시적으로 추가
express 프레임워크에서의 미들웨어
미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트(res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수에 대한 액세스 권한을 갖는 함수이다. 그 다음의 미들웨어 함수는 일반적으로 next라는이름의 변수로 표시된다.
미들웨어(Middleware)란 요청과 응답 중간에 거쳐가는 함수로, 어떠한 동작을 하거나, 오류를 걸러내기도 한다. Express에서는 사실상 모든 것이 미들웨어이다.
현재의 미들웨어 함수가 요청-응답 주기를 종료하지 않는 경우에는
next()
를 호출하여 그 다음 미들웨어 함수에 제어를 전달해야 한다. 그렇지 않으면 해당 요청은 정지된 채로 방치된다.app.use()
메서드를 사용하며, 인자로 미들웨어 함수를 넣으면 된다.미들웨어의 경우, 동기적으로 작성 순서대로 실행되므로, 순서를 주의해서 작성해 주어야한다.
주요 미들웨어
body parser
express-session
참고
JWT vs Session 로그인 상태관리
https://stackoverflow.com/questions/43452896/authentication-jwt-usage-vs-session
https://namunotebook.tistory.com/14
학습 내용에 대한 개인적인 총평
쌩뚱맞게 node & express 학습을 시작했다. spring도 넘 재밌게 하고 있었긴한데, QRcheckin에 이벤트 테이블을 붙여보고 싶어져서..ㅎㅎ;
다른 것보다 실제로 사용되는 서비스를 만들고 싶다는 갈증이 너무 커진 상태이다. 무엇보다 사람들이 많이 쓰는 코드를 작성하고 싶다. cub3d tester도 사람들이 많이 써주니까 즐겁더라. 마침 관심있었던 것들이 모여있다.
node
QR코드
상용 서비스에 테이블 붙이기
사실 나를 제한하는건 나 밖에 없다. 놀 시간에 node & express 공부해보자, 그냥 잠을 덜 자면 되지 뭐ㅎㅎ :)
flow는 아래와 같이 할 것이다.
node 기초 학습 (완료)
QR 코드 리더기 뜯어보기 (진행 중)
테이블 붙이기
붙인 테이블에 이벤트 입력하는 어드민 페이지 개발
다음 학습 계획
QR 코드 리더기에 테이블 붙이기
Last updated