컴퓨터네트워크 5주차 스터디노트
면접예상질문
쿠키와 세션에 대해서 설명해주세요
- 쿠키는 서버가 사용자 웹 브라우저에 전송한 데이터 조각이다
브라우저는 그 데이터 조각을 저장하고, 동일한 서버에 재 요청시 저장된 데이터를 함께 전송한다
쿠키를 통해 서버는 두 요청이 동일한 브라우저에서 들어온건지 판단할 수 있다
- 세션은 클라이언트(브라우저) 별로 서버에 저장되는 정보이다
- 상태유지와 관련해서는 세션은 SessionID를 사용해서 어떤 사용자가 서버에 로그인 되어있음 지속되는 이 상태를 세션이라 한다
SOP와 CORS에 대해서 설명해주세요
- 출처(Origin):
Protocol과 Host, Port를 합친 URL
- SOP(Same Origin Policy): 동일한 출처에서만 리소스를 공유할 수 있다는 정책
- CORS(Cross-Origin Resource Sharing): 다른 출처의 리소스 공유에 대한 허용/비허용 정책
REST API 란 무엇일까요
- 로이필딩이 웹(HTTP) 설계에 비해 제대로 사용되지 못하는 모습에 제안한 아키텍처
- HTTP URI를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation 을 적용하는 것
- 리차드슨이 제안한 REST 성숙도 모델
- 0단계: HTTP 프로토콜 사용
- 1단계: 개별 리소스와의 통신을 준수한다, 엔드포인트 작성방법을 준수한다
- 2단계: CRUD에 맞게 적절한 HTTP 메소드를 사용한다
- 3단계: HATEOS를 적용한다
XXS 공격이 무엇이고 어떻게 예방할 수 있는지 설명해주세요
- 악의적인 용도로 웹사이트에 스크립트를 삽입하는 공격기법
- 예방방법: 쿠키에 HttpOnly옵션(session Hijacking 방지), 태그에 사용되는 문자들을 치환한다
SQL Injection이 무엇이고 어떻게 예방할 수 있는지 설명해주세요
- SQL Injection이란 악의적인 사용자가 임의의 SQL 문을 주입하고 실행되게하는 행위
- 예방방법: Prepared Statement 구문을 사용하면 파라미터 값이 쿼리가 아닌 문자열로 인식된다
REST API에 대한 제약 조건들에 대해서 설명해주세요
- Client-Server: 관심사의 명확한 분리
- Stateless: 서버에서 클라이언트 상태정보 저장하지 않기
- Cacheable: 응답에 해당 요청은 캐시가 가능한지 불가능한지 명세하기
- Uniform Interface: 리소스에 대해 식별할 수 있어야하고, 자원에 대한 표현과 작업에 대한 메타데이터, 자기서술적메시지(HATEOAS)
- Layered System: 계층구조로 확장성 있는 시스템
- Code-on-Demand: 실행코드로 기능확장
토큰에 대해 설명해주세요
- JWT 같은 토큰 인증 방식은 세션과 달리 stateless하다 반면 단점으로는 유지하고 있는 상태들을 제어하기 어렵다
- 서버는 요청에 토큰 값이 실려오면 1번 (헤더)와 2번 (페이로드)의 값을 서버의 비밀키와 함께 돌려서 계산된 결과값이 3번 서명값과 같은지 비교한다
URL, URI, URN 차이가 뭘까요?
- URI은 두 부분집합 URL, URN을 가진다
URI: 리소스가 어디에 있는지 설명
URN: 이름만으로 식별
웹 캐시에 대해서 설명해주세요
- 클라이언트가 웹 서버에 요청할 때 정적 컨텐츠를 특정 위치에 저장하여 웹 서버에 해당 컨텐츠를 매번 요청하고 받는 것이 아니라 특정 위치에서 불러옴으로써 응답시간을 줄이고, 서버 트래픽 감소효과를 가져오는 것
포워드 프록시에 대해서 설명해주세요
- 클라이언트와 인터넷 사이에 프록시가 위치해서 클라이언트 대신 서버에 요청을 보내주는 역할을 한다
- 이점으로는 로컬 네트워크와 인터넷 사이 오가는 트래픽을 제어, 부적절한 접근을 필터링할 수 있다
리버스 프록시에 대해서 설명해주세요
- 서버와 인터넷 사이에 위치해서 서버의 응답을 클라이언트에게 대신 보내주는 역할을 하는 프록시
- 웹서버의 바로 앞에 위치
- 웹서버의 보안기능 추가, 캐시를 통해 응답 속도를 높혀줄 수 있다
추가공부
JWT
- 매번 인가를 받을 때 쓰는 수명짧은토큰이 액세스 토큰이고
액세스 토큰을 재발급 받을 때 쓰는것이 리프레시 토큰이다
캐시
- 데이터나 값을 미리 복사해놓은 임시저장소
- 캐시에 데이터를 미리 복사 해놓으면 계산이나 접근시간 없이 더 빠른 속도로 데이터에 접근할 수 있다
- Etag, Cache-Control, 파일버전번호를 함께 사용하면 효율적인 캐싱이 가능하다
프록시
- 서버와 클라이언트 사이의 중계가로서 클라이언트 대신 서버와 대리로 통신을 수행하는 것
- 이런 프록시 역할을 하는 서버를 프록시 서버라고 함
프록시 서버
- 캐시를 통해 자원들을 저장할 수 있다
- 프록시 서버를 거치는 요청과 응답을 확인할 수 있다
- 프록시 서버로 넘어온 데이터를 조작할 수 있다
- TransCoder: 데이터 압축과 언어변환
- Anonymizer(익명화)