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

Jay·2023년 11월 9일
1

안녕하세요! 저는 요즘 회사에서 풀스택으로 어드민 사이트를 개발하고 있습니다. 최근 회사에서 유저 사이트의 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개의 댓글