철통보안 어드민 웹사이트 만들기

Jay·2023년 11월 9일

안녕하세요! 저는 요즘 회사에서 풀스택으로 어드민 사이트를 개발하고 있습니다. 최근 회사에서 유저 사이트의 seo를 개선하던 중에 구글에서 '어드민 사이트'를 검색하면 몇몇 회사의 어드민 사이트가 노출되는 것을 확인했습니다.

어드민 사이트에는 DB CRUD, push 기능 등 민감한 정보과 기능이 많이 담겨 있어, 현재 저는 보안을 위해 아래와 같은 방법을 적용하고 있습니다.

  1. URL 보안 강화
    • 복잡한 문자열로 URL을 구성하여 직접적인 접근 어렵게 만듦
  2. 로그인 인증 기능
    • JWT를 사용하여 로그인 인증 기능 구현
  3. 인증 체크 미들웨어
    • 모든 페이지 접근 시 미들웨어를 통해 인증 체크
  4. 자동 로그아웃 설정
    • 일정 유휴 시간 후 자동 로그아웃되도록 설정
  5. 커스텀 API KEY 활용
    • 메인 서버에 요청 시 헤더에 커스텀 API KEY를 포함하여 추가 보안 적용
  6. Auth Guard 활용
    • request와 controller 사이에 auth guard를 적용하여 추가 검증 수행

검색 결과에 노출되기 위해서는 다음과 같은 과정을 거치는데요,

검색 봇이 웹을 탐색하며 컨텐츠 수집 -> 검색 엔진의 색인에 정보 추가 -> 사용자 검색 -> 색인된 정보를 기반으로 검색 결과 표시

위의 방법에 더해서 검색 결과에 노출되는 것을 피하고자 robots.txt에 다음과 같은 코드를 추가했습니다. robots.txt를 활용하면 검색 봇의 접근을 막을 수 있습니다.

(robots.txt)

User-agent: *           // 모든 크롤러 여러분
Disallow: /             // 크롤링하지 말아주세요

만약 웹사이트 내의 특정 페이지의 색인을 막고 싶다면 해당 페이지 head 태그에 아래의 meta를 삽입하면 됩니다.

<meta name="robots" content="noindex, nofollow" />

만약 특정 디렉토리의 접근을 막고 싶다면 아래와 같이 작성할 수 있습니다.

(robots.txt)

User-agent: *         
Disallow: /secret

모든 검색 봇이 robots.txt를 준수하지는 않지만, 이러한 조치를 통해 크롤링을 어렵게 만들 수 있으리라 기대하고 있고, 보다 안전한 어드민을 위해서 더 공부하고 보안을 강화할 생각입니다. 감사합니다!

[참고]
https://www.cloudflare.com/ko-kr/learning/bots/what-is-a-web-crawler/
https://korea.googleblog.com/2008/04/robotstxt.html
https://heewon26.tistory.com/290
https://ko.wikipedia.org/wiki/%EA%B5%AC%EA%B8%80%EB%B4%87

0개의 댓글