정보보안-이론/XX에 대하여

Robots.txt에 대하여

크롤링이라.... 심란한 분야이다. 전 세계 트래픽의 절반 이상이 Bots으로 이루어져 있다는 사실은 이미 유명할 것이다.(어라 조금 더 있었던 거 같은데?)

< 출처 : https://www.statista.com/chart/1894/global-website-traffic-by-source/>

 사실 이러한 크롤링이 순기능만을 가지고 있는 것은 아니라고 본다. 

 

"아니 정보의 바다에서 필요한 정보만을 가져오는게 뭐가 불만이에요!"

 

이렇게 생각하는게 당연하다. 물론 그렇고 말고

단, bots의 크롤링을 필터링 없이 무분별하게 허용하는 순간 많은 위험에 빠지는 것은 당연하다. 기본적인 취약점 스캐닝 도구인 Nikto나 Nessus 등 여러 가지 Explotable 한 요점을 뽑아낼 수 있는 툴은(심지어 스크립트 엔진을 쓴 nmap까지)에 대해서 bots의 접근 차단하지 않으면 자신의 서버의 취약점을 open 하겠다는 선언과 다를 바 없으니 말이다. 그러면 이러한 위협에서 우리를 도와줄 프로토콜은 없는 것인가? 그 아이디어에서 나온 게 바로 로봇 배제 표준이다.


정의

로봇 배제 표준(robots exclusion standard), 로봇 배제 프로토콜(robots exclusion protocol)은 웹 사이트에 로봇이 접근하는 것을 방지하기 위한 규약으로, 일반적으로 접근 제한에 대한 설명을 robots.txt에 기술한다.

< 로봇 배체 표준 정의 : 출처 위키백과 https://ko.wikipedia.org/wiki/%EB%A1%9C%EB%B4%87_%EB%B0%B0%EC%A0%9C_%ED%91%9C%EC%A4%80>

로봇 배제 표준을 robots.txt에 기술한다고 적혀있는데 robots.txt를 보면 다음과 같은 형식을 가진다.

User-Agent : [로봇명]
Allow : [크롤링 허용 경로]
Disallow : [크롤링 차단 경로]

User-Agent : [로봇명]
Allow : [크롤링 허용 경로]
Disallow : [크롤링 차단 경로]

User-Agent : [로봇명]
Allow : [크롤링 허용 경로]
Disallow : [크롤링 차단 경로]

...

참고로 robots.txt는 사이트의  루트디렉토리(/)에 있는 것이 원칙이다. 또한 public 하게 공개되어있다. User-Agent에 애스터레이크(*)가 있으면 모든 요청에 대한 것을 의미한다.

아래는 구글 robots.txt의 일부이다.

User-agent: *
Disallow: /search
Allow: /search/about
Allow: /search/static
Allow: /search/howsearchworks
Disallow: /sdch
Disallow: /groups
Disallow: /index.html?
Disallow: /?
Allow: /?hl=
Disallow: /?hl=*&
Allow: /?hl=*&gws_rd=ssl$
Disallow: /?hl=*&*&gws_rd=ssl
...

https://www.google.com/robots.txt

다음번 포스팅은 robots.txt의 단짝인 sitemap에 대해서 적어보려고 한다.