URL란?

Uniform Resource Locator의 약자. 웹 페이지 등 자원의 위치를 나타내는 문자열. https://www.example.com:8443/docs/page.html?q=1#top처럼 스킴(https), 호스트 이름, 포트 번호, 경로, 쿼리(? 뒤), 프래그먼트(# 뒤)로 이루어진다. 포트 번호는 생략하면 기본값(HTTPS라면 443)이 되고, 호스트 이름은 DNS로 IP 주소로 변환된다.

일본어 명칭: URL

URL은(는) 웹 기술 기초, 정보 보안 기초, 클라우드와 컨테이너의 기초 등 5개 분야의 연습 문제 14개에 나와요.

분야: 웹 기술 기초

도전해 보기: URL 관련 문제

브라우저에서 https://www.example.com:8443/docs/guide.html?lang=ja#install을 열었다. 이 URL 중 서버로 보내는 요청에는 포함되지 않고, 페이지를 읽어 들인 후 브라우저 안에서만 사용되는 부분은?

  1. A:8443
  2. B?lang=ja
  3. C#install
정답과 해설 보기

정답: C. #install

이 URL은 스킴(https), 호스트 이름(www.example.com), 포트 번호(8443, 생략하면 https에서는 443), 경로(/docs/guide.html), 쿼리(lang=ja), 프래그먼트(install)로 이루어져 있습니다. 브라우저는 포트 번호로 접속할 곳을 정하고, 경로와 쿼리를 요청에 넣어 서버로 보내지만, # 뒤의 프래그먼트는 보내지 않습니다. 프래그먼트는 페이지 안에서 id="install"인 요소의 위치로 이동하는 등 브라우저 안에서만 사용됩니다.

URL의 쿼리에 일본어 문자 'あ'를 넣기 위해, 이 문자를 UTF-8로 나타낸 바이트열(E3 81 82)을 퍼센트 인코딩으로 나타낸다. 결과로 올바른 것은?

  1. A%E3%81%82
  2. B%u3042
  3. Cあ
정답과 해설 보기

정답: A. %E3%81%82

퍼센트 인코딩에서는 URL에 그대로 쓸 수 없는 문자나, / ? # &처럼 특별한 의미를 가진 문자를 데이터로 사용할 때, 문자를 바이트열로 바꾸어 1바이트씩 '%'와 2자리 16진수로 나타냅니다. 'あ'는 UTF-8에서 E3 81 82의 3바이트이므로 %E3%81%82가 됩니다. 공백은 %20이 됩니다(폼 전송 형식에서는 +를 사용하기도 합니다). JavaScript에서는 encodeURIComponent 함수로 이 변환을 할 수 있습니다.

해설 속 URL

URL이(가) 나오는 문제 (14)

  1. 포트 80에서 대기하는 웹 서버의 이미지 nginx로부터 위의 명령으로 컨테이너를 시작했다. 호스트의 IP 주소는 192.0.2.10이고 방화벽 등의 제한은 없다고 하자. 같은 네트워크에 있는 다른 PC의 브라우저에서 이 웹 서버에 접속하는 URL로 올바른 것은?
  2. 브라우저에서 https://www.example.com:8443/docs/guide.html?lang=ja#install을 열었다. 이 URL 중 서버로 보내는 요청에는 포함되지 않고, 페이지를 읽어 들인 후 브라우저 안에서만 사용되는 부분은?
  3. URL의 쿼리에 일본어 문자 'あ'를 넣기 위해, 이 문자를 UTF-8로 나타낸 바이트열(E3 81 82)을 퍼센트 인코딩으로 나타낸다. 결과로 올바른 것은?
  4. 온라인 결제 서비스에서 결제가 완료된 것을 가맹점 서버가 즉시 알고 싶어 한다. 결제 서비스가 미리 등록된 가맹점의 URL로 HTTP POST로 통지를 보내는 방식(Webhook)에 대한 설명으로 올바른 것은?
  5. 브라우저의 동일 출처 정책에서 https://www.example.com/app/index.html과 같은 출처로 간주되는 URL은?
  6. 웹 애플리케이션이 URL 매개변수로 지정된 파일 이름을 공개용 폴더의 이름과 이어 붙여 읽어 들여 표시하고 있다. 파일 이름에 ../를 포함한 값을 지정하면 공개용 폴더 밖에 있는 설정 파일 등을 읽어 낼 수 있게 된다. 이 공격의 이름과 대책의 조합으로 올바른 것은?
  7. Kubernetes 클러스터에서 하나의 호스트 이름으로 도착한 HTTPS 요청 중 경로가 /api로 시작하는 것은 api의 Service로, 그 밖의 것은 web의 Service로 분배하고 싶다. 이 분배 규칙을 정하는 데 적합한 리소스는?
  8. DNS의 주된 역할로 올바른 것은?
  9. HTTPS(HTTP를 TLS로 보호한 통신)로 보호되는 것으로 올바른 것은?
  10. HTTP의 상태 코드와 그 의미의 조합으로 올바른 것은?
  11. REST의 사고방식에 따른 웹 API 설계로 적절한 것은?
  12. 피싱의 수법과 이용자 측 대책의 조합으로 올바른 것은?
  13. 웹 애플리케이션에서 로그인 전과 후에 같은 세션 ID를 계속 사용하면, 공격자가 미리 준비한 세션 ID를 이용자가 사용하게 하고, 이용자가 로그인한 뒤 그 ID로 이용자를 사칭할 우려가 있다. 이 공격에 대한 대책으로 가장 적절한 것은?
  14. WAF(웹 애플리케이션 방화벽)에 대한 설명으로 올바른 것은?

관련 용어

HTTP(하이퍼텍스트 전송 프로토콜) IP 주소(IP Address) HTTPS 포트 번호(Port Number) 방화벽(Firewall) TLS 컨테이너(Container) 동일 출처 정책(Same-origin Policy) Kubernetes 리버스 프록시(Reverse Proxy)

용어집으로 돌아가기