작성일: 2011년 1월 7일 금요일

안녕하세요, 구글코리아 소프트웨어 엔지니어 이동휘 입니다.

오늘은 많은 웹사이트 담당자분들이 robots.txt(로봇제어파일)을 작성하면서 걱정하시는 문제를 짚어보려고 합니다. 때때로 대형 웹사이트 담당자분들이 robots.txt의 규칙과 내용을 비교적 잘 이해하고 있으면서도, 검색로봇이 접근하지 말아야 할 디렉토리의 목록을 robots.txt 에 입력하는 것이 오히려 악의적인 해커들에게 힌트를 주는 것이 아닌지 걱정을 하시거든요.

[제가 직접(!) 그려본 침입개념도입니다]

예를 들어, robots.txt 파일에 검색로봇을 차단할 디렉토리를 다음과 같이 지정한다고 가정합니다.
User-agent: *
Disallow: /admin
Disallow: /private_db

robots.txt는 홈페이지처럼 공개되어 있는 파일이므로 악의적인 해커는 우선 robots.txt파일을 쭈욱 읽어본 다음 회심의 미소를 지으며 /admin이나 /private_db 폴더부터 우선 공격한다는 이야기지요. (로봇제어파일의 소개는 이전 포스트를 참고하세요.)

이에 대하여 완벽하지는 않지만 해결책을 알려드리겠습니다.

1. Disallow와 Allow 조합

자, 그럼 첫 번째 해결책부터 들어갑니다. 모든 파일을 Disallow한 다음 공개할 디렉토리만 선택적으로 Allow하는 방법입니다. 이 방법은 Allow로 지정해야할 디렉토리가 많지 않을 때 유용합니다. 예를 들면 다음과 같습니다.

User-agent: *
Disallow: /
Allow: /index.html
Allow: /public

모든 검색로봇에 대해서 해당 사이트의 모든 파일을 차단(두번째 행)한 후, /index.html 파일과 /public 디렉토리를 허용한다는 뜻입니다. /public 디렉토리라고 했지만 사실 정확히 얘기하면 /public으로 시작하는 어떤 URL 경로도 허용합니다. 예를 들어, /public_db, /public/list.html 또는 /public?q=hello 도 모두 허용됩니다.

2. 디렉토리명의 일부만 사용

두 번째로는 차단할 디렉토리명의 일부만을 사용하는 방법입니다. 위의 예에서도 보셨지만 Disallow나 Allow 항목의 디렉토리명은 사실은 URL경로의 앞쪽만 일치하면 적용됩니다. 예를 들면,

User-agent: *
Disallow: /a
Disallow: /p

이렇게만 적어도 /admin 디렉토리와 /private_db 디렉토리의 내용 모두 차단됩니다. 이때 주의할 것은, /public 디렉토리도 /p로 시작하므로 이럴 경우는 좀 더 자세히 적어주는 것이 좋습니다. 다음과 같이요.

Disallow: /pri

아니면, Allow: /public 을 따로 추가해주어도 되겠지요.

3. 파일 확장자로 차단

추가적으로 한가지 더 알려드리자면 파일의 확장자만을 기준으로 차단이나 허용이 가능합니다. 예를 들어, 우리 사이트의 모든 PHP프로그램은 검색로봇이 접근하지 않도록 하려면 다음과 같이 하면 됩니다.

User-agent: *
Disallow: /*.php

/public/program.php, /filename.php?q=hello 등의 .php 확장자를 가진 페이지로의 접근이 차단됩니다. 와일드카드 문자 ‘*’는 그 자리에 아무 문자가 없을 수도 있고 임의의 어떤 문자열이 올 수도 있습니다.

자, 완벽하지는 않지만 그럴듯한 해결책이 되겠는지요? robots.txt의 규칙과 구글 검색로봇의 원리에 대해서 더 궁금하신 분은 이전 포스트들과 다음의 사이트를 참고하세요.
Controlling Crawling and Indexing: http://code.google.com/web/controlcrawlindex (영어 문서입니다. 한국어 문서는 현재 작업 중에 있으니 조금만 기다려주세요~)

마지막으로 꼭 말씀을 드려야 할 것이 있는 데, 해커를 얕잡아 보지 마십시오. 단지 robots.txt파일에 써 있는 내용을 통해 디렉토리명을 아는 정도로 위험해질 시스템이라면 robots.txt파일과 관계없이 이미 악의적 공격자의 먹이감이 될 수 있습니다. 컴퓨터 세계에서는 방어자보다 공격자가 훨씬 유리하며 보이지 않는 악의적 해커는 단순한 힌트 한 두개가 없다고 절대로 포기하지 않거든요.

즉, robots.txt는 정상적인 검색로봇과 웹마스터가 소통하는 창구일 뿐 개인정보 보호나 시스템 보안과는 연결고리가 크지 않습니다.

다음 번에는 robots.txt로 차단하였는데 검색엔진에 색인이 되는 희한한 현상에 대해서 알려 드리겠습니다.

* 웹마스터를 위한 검색이야기의 다른 시리즈를 보시려면 여기를 눌러주세요.

작성자: 구글코리아 소프트웨어 엔지니어 이동휘