관리 메뉴

ARTIFEX ;)

Robots.txt에 대해 제대로 알자 본문

# Security/(구)보안

Robots.txt에 대해 제대로 알자

Artifex_Ethan_ 2024. 4. 1. 16:58
반응형

robots.txt

간단하게 말하자면 웹 크롤러들이 접근하지 못 하도록 제한하는 규약.

물론 프로토콜이라고 하기엔 강제성을 띄진 않기 때문에(robots.txt가 있어도 크롤러가 무시하도록 개발되었다면 상관 안합니다.) 어렵고, 그냥 서로서로 지키자 정도의 규칙정도?


보통 접근하지 말아야할 경로가 들어가게 된다. 일반 웹 사이트들은 검색 엔진에 최대한 노출이 되는 것이 목표라 중요하지 않을 것 같지만, 불필요한 페이지들은 크롤링 제한을 해주어 양질의 데이터가 검색 서비스에 노출되도록 하는게 상위 노출을 위해 좋은 방법이기 때문에 robots.txt는 많은 사이트들이 적용하고 있는 부분.


“robots.txt 에서 User-Agent가 명시되지 않으면 모든 UA 차단인가?”


결론부터 말을 하자면 아니다.

robots.txt는 최소 하나 이상의 규칙이 있어야 적용이 되며, 규칙은 하위 2개의 필수 규칙으로 이루어진다.

User-agent: [차단할 UA]
Disallow: [Disallow, Allow 할 경로]

어떤 User-Agent를 걸러낼지, 어떻게 처리할지(Disallow, Allow)의 경로

조건이 부족하기 때문에 비정상적인 규칙으로 판단하고, 보통의 웹 크롤러들은 이를 무시한다.

(크롤러 마다 다를 수도 있으며, 이 글을 구글 크롤러 기준이다.)


(필수) User-agent: "HTTP Request 내 걸러내야 할 User-Agent 헤더를 의미."
(필수) Disallow(Allow 중 하나는 필수): "User-agent가 맞을 때 처리하는 방식. 인자값? 으로 경로를 제공함."
(필수) Allow(Disallow 중 하나는 필수): "위와 동일"
(옵션) Sitemap: "웹 사이트의 전체 링크 구조를 가진 사이트맵을 명시함. 이를 기준으로 웹 크롤러가 사이트 전체 데이터를 판단한다."

위 코드는 robots.txt 파일을 작성할 때의 규칙이다.

Burp 같은 Proxy Tool을 이용해서 쉽게 볼 수 있는 것들인데 평소 그냥 지나쳤다면 한번쯤은 읽어보고 이해하고 넘어가길 바란다.


User-agent: ABCD
Disallow /allow-dir/*.rb$
Allow /allow-dir

위 코드 중 Disallow, Allow는 두 번째 값으로 경로를 두어 처리하는데, 경로에 $가 붙으면 해당 문자로 끝나는 모든 경로를 차단한다.

위와 같은 규칙이 있다고 하면 ABCD의 UA 중 allow-dir 내 .rb 파일은 모두 차단하고, 나머지는 모두 접근 가능하도록 설정이 되게 한다는 의미이다.


- 적용 범위 -

robots.txt가 위치한 도메인이나 path에 따라 적용 가능한 범위가 달라진다.

딱 5개만 알고 가자.


1. 도메인은 정확하게 체크됨
 + <https://www.test.com> 적용 시 www 도메인만 적용됨
2. 경로의 최상위 디렉토리에만 유효
 + /test/robots.txt는 적용되지 않음
3. 프로토콜(http, https ,ftp 등..)도 정확하게 따짐
 + <http://www.test.com으로> 적용 시 <https://www.test.com은> 적용받지 않음)
4. 포트도 정확하게 걸러냄
 + <https://www.test.com> 적용 시 https://www.test.com:8080은 무효
 + 단 80,443 같이 프로토콜의 기본 포트는 예외됨(<http://test.com:80> == <http://test.com>)
5. IDN은 동일한 구간으로 봄
 + <https://www.test.com> 시 <https://www.test.com> , <https://www.xn--test-mva.com>

길어서 번거로울 수도 있지만 읽어보는 수준 정도로만 지나쳐도 무방하다.

robots.txt에 대한 이해가 전혀 없었다면 읽어보고 지나치는 것을 추천한다.


robots.txt에 대한 설명은 어떻게 보면 아주 기초적인 내용이지만 정확하게 이해하지 않고 쉽게 지나칠 수 있는 부분이라 추가적으로 설명하는 게시글을 작성하였다. 조금이라도 참고가 되고 도움이 되었다면 만족스러운 게시글이라고 생각한다.
2022년도 작성되었지만 기본 개념에 대한 이해가 필요한 녀석임.


반응형

'# Security > (구)보안' 카테고리의 다른 글

CPU Meltdown & Spectre 취약점 2 (in 2022)  (1) 2024.04.01
CPU Meltdown & Spectre 취약점 1 (in 2022)  (0) 2024.04.01
XSS, CSRF 간단 정리  (0) 2020.05.22
# OWASP TOP 10 ver.2017  (0) 2020.05.22
허니팟 Honey-Pot  (0) 2020.05.20