웹마스터를 위한 검색 이야기(4) - robots.txt 작성팁 하나
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로 차단하였는데 검색엔진에 색인이 되는 희한한 현상에 대해서 알려 드리겠습니다.
* 웹마스터를 위한 검색이야기의 다른 시리즈를 보시려면 여기를 눌러주세요.
작성자: 구글코리아 소프트웨어 엔지니어 이동휘
자, 그럼 첫 번째 해결책부터 들어갑니다. 모든 파일을 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로 차단하였는데 검색엔진에 색인이 되는 희한한 현상에 대해서 알려 드리겠습니다.
* 웹마스터를 위한 검색이야기의 다른 시리즈를 보시려면 여기를 눌러주세요.
작성자: 구글코리아 소프트웨어 엔지니어 이동휘