본문으로 건너뛰기 프로젝트 상담 신청

1분 보안 점검 · 006 보안 보안 헤더 서버 점검

사이트가 요청 한 번에 스스로 말해 주는 것

읽는 데 약 5분 더블루캔버스

우리 홈페이지에 보안 헤더가 붙어 있는지 어떻게 확인하나요?

브라우저에서 F12 를 눌러 네트워크 탭의 첫 응답 헤더를 열고 Strict-Transport-Security, X-Frame-Options, Content-Security-Policy 세 줄이 목록에 있는지 찾으시면 됩니다. 641곳에 요청을 한 번씩 보내 확인한 결과 응답한 615곳 가운데 405곳에는 세 줄이 하나도 없었고, 106곳은 제품 이름과 버전을 그대로 적어 보냈으며, 5곳은 폴더 목록이 그대로 열렸습니다.

핵심 요약

  • 주소창에 /uploads/ 를 쳤을 뿐인데 로그인 없이 파일 목록이 그대로 열리는 곳이 있습니다. 뚫은 것이 아니라 서버가 그렇게 보여 주도록 되어 있는 것입니다.
  • 641곳에 요청을 한 번씩 보내 본 결과, 답한 615곳 가운데 폴더 목록이 열린 곳이 5곳, 제품 이름과 버전이 그대로 읽힌 곳이 106곳, 보호 헤더 세 줄이 하나도 없는 곳이 405곳이었습니다.
  • 오늘 하실 일은 고치는 것이 아니라 담당자에게 두 줄 묻는 것입니다. 무엇을 어떻게 바꿀지는 사이트 구조를 아는 사람이 정하는 편이 안전합니다.

주소 하나만 쳤는데 폴더가 그대로 열립니다

브라우저 주소창에 사이트 주소를 넣고 뒤에 /uploads/ 를 붙여 봅니다. 로그인 화면도, 오류 화면도 나오지 않고 Index of /uploads/ 라는 제목과 함께 파일 목록이 그대로 뜹니다. 계약서 스캔, 직원 명단, 데이터베이스 덤프 같은 이름이 줄줄이 보입니다.

권한을 넘은 것도, 무엇을 뚫은 것도 아닙니다. 그 폴더에 첫 화면으로 쓸 파일이 없을 때 서버가 목록을 대신 그려 주도록 되어 있어서입니다. 그래서 주소를 아는 사람이면 누구나 같은 화면을 봅니다.

요청 한 번씩만 보내 봤습니다

더블루캔버스 리뷰 아카이브에 주소가 남아 있는 641곳에 홈 화면 요청을 한 번씩 보내고, 이어서 고정 경로 다섯 개에 각각 한 번씩 더 보냈습니다.

확인한 것
주소가 남아 있는 대상641곳
요청에 답한 곳615곳
폴더 목록이 그대로 열린 곳5곳 (두 곳 이상 열린 곳 2곳)
제품 이름과 버전이 그대로 읽힌 곳106곳
보호 헤더 세 줄이 하나도 없는 곳405곳 (셋 다 있는 곳 30곳)

열린 경로는 /images/ 3곳, /data/ 2곳, /uploads/ 1곳, /files/ 1곳이었고 /backup/ 은 0곳이었습니다. 5곳은 많은 수가 아닙니다. 다만 열린 곳은 누구에게나 열려 있습니다.

측정 방법을 밝힙니다. 2026년 8월 31일에 홈 화면과 고정 경로 다섯 개에 각각 GET 한 번씩만 보냈습니다. 리다이렉트는 4회까지 추적했고 타임아웃은 10초, 동시 8스레드입니다. 인증도, 파라미터 조작도, 재시도도 하지 않았습니다. 열린 목록의 실제 파일 이름은 옮기지 않았고, 영상과 본문의 화면은 재현입니다.

폴더 목록이 닫혀 있어도, 사이트는 요청에 답하면서 자기 소개를 함께 보냅니다.

HTTP/1.1 200 OK
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k
X-Powered-By: PHP/5.4.16
Content-Type: text/html; charset=UTF-8

무엇으로 만들었고 몇 번째 판인지가 그대로 적혀 나옵니다. 응답한 615곳 가운데 106곳에서 제품 이름과 버전이 읽혔고, 많이 나온 값은 OpenSSL/1.0.2 14곳, Apache/2.4.6 11곳, PHP/5.4.16 8곳, PHP/7.4.33 8곳이었습니다. 이 값들이 아직 지원되는 버전인지는 PHP 버전을 3년째 안 올린 사이트에서 생기는 일에서 따로 다뤘습니다.

줄이는 일과 더하는 일은 다릅니다

여기서 두 가지를 나눠서 보셔야 합니다. 성격이 다른 작업이라 같이 묶으면 판단이 어긋납니다.

성격무엇인가
줄이는 일밖으로 드러나는 정보폴더 목록 자동 표시, Server 의 제품·버전, X-Powered-By
더하는 일브라우저에 거는 규칙HSTS, X-Frame-Options, Content-Security-Policy

이 항목들이 없다고 침해가 확정되는 것은 아닙니다. 반대로 다 있다고 안전해지지도 않습니다. 사이트마다 구조가 달라서 설정 몇 줄로 한 번에 끝나는 일도 아닙니다. 예를 들어 Content-Security-Policy 는 잘못 걸면 쓰던 화면이 멈추기도 합니다. 그래서 이 글은 「이렇게 고치세요」가 아니라 「이것부터 확인해 보세요」로 끝납니다.

오늘 하실 일은 묻는 것입니다

관리 담당자에게 두 줄만 보내 보십시오. 그대로 복사해서 쓰셔도 됩니다.

  1. 「공개 폴더에 파일 목록이 그대로 열리는 곳이 있는지 확인해 주시겠어요?」 이미지·업로드·자료실처럼 로그인 없이 열리는 경로를 봐 달라고 하시면 됩니다.
  2. 「응답 머리글에 제품 이름과 버전이 찍히고 있는지도 함께 봐 주세요.」 필요 없는 노출이면 줄일 수 있는지 판단해 달라고 덧붙이시면 됩니다.

두 가지 모두 확인만으로도 답이 나오는 항목입니다. 무엇을 어떻게 바꿀지는 사이트 구조를 아는 담당자가 정하는 편이 안전합니다. 밖에서 무엇이 보이는지 함께 확인해 드리는 것도 가능합니다.

영상 자막 전문 (6개 장면)

로그인도 안 했는데 파일 목록이

로그인도 안 했는데 파일 목록이 보인다면, 주소를 한 번 친 것뿐입니다.

주소 하나만 쳤는데 폴더가 열립니다

주소창에 /uploads/ 를 쳐 봤더니 로그인도 안 했는데 파일 목록이 그대로 뜹니다. 누구나 같은 화면을 볼 수 있습니다.

요청 한 번의 결과

공격이 아니라 주소를 한 번 친 것뿐입니다. 641곳에 요청을 한 번씩 보냈더니, 응답한 615곳 중 5곳이 이랬습니다.

사이트는 스스로 말합니다

목록이 닫혀 있어도 응답 머리글에 제품 이름과 버전이 적혀 나옵니다. 그렇게 읽힌 곳이 106곳이었습니다.

줄이는 일과 더하는 일

드러나는 정보를 줄이는 일과, 브라우저에 거는 보호 설정을 더하는 일은 성격이 다릅니다.

담당자에게 두 줄만 물어보세요

공개 폴더에 목록이 열리는지, 응답에 버전이 찍히는지 확인해 달라고 담당자에게 요청하시면 됩니다.

자주 묻는 질문

우리 홈페이지에 보안 헤더가 붙어 있는지 어떻게 확인하나요?

브라우저에서 F12 를 눌러 네트워크 탭을 열고 첫 응답의 헤더 목록에서 Strict-Transport-Security, X-Frame-Options, Content-Security-Policy 세 이름을 찾으시면 됩니다. 641곳에 요청을 한 번씩 보내 확인한 결과 응답한 615곳 가운데 405곳에는 세 줄이 하나도 없었고, 셋 다 있는 곳은 30곳이었습니다.

폴더 목록이 열려 있으면 해킹당한 건가요?

아닙니다. 그 폴더에 첫 화면으로 쓸 파일이 없을 때 서버가 목록을 대신 그려 주는 기본 동작입니다. 침해가 있었다는 뜻이 아니라, 밖에서 볼 필요가 없는 파일 이름이 보이고 있다는 뜻입니다. 무엇이 들어 있는지에 따라 판단이 달라지므로 먼저 확인해 보시는 것이 순서입니다.

보호 헤더가 없으면 위험한가요?

없다고 침해가 확정되는 것은 아니고, 다 있다고 안전해지지도 않습니다. 이 헤더들은 브라우저에게 규칙을 알려 주는 장치라서 있으면 특정 유형의 문제를 줄여 줍니다. 다만 Content-Security-Policy 처럼 잘못 걸면 쓰던 화면이 멈추는 항목도 있어서, 사이트 구조를 아는 담당자가 판단해 적용하는 편이 안전합니다.

설정 몇 줄만 넣으면 끝나는 일 아닌가요?

사이트마다 다릅니다. 폴더 목록을 끄는 일은 대개 간단하지만, 제품·버전 노출을 줄이는 방법은 서버 종류와 구성에 따라 달라지고, 보호 헤더는 사이트가 쓰는 외부 스크립트와 프레임 구조에 맞춰 값을 정해야 합니다. 그래서 이 글은 조치 방법이 아니라 확인 요청으로 끝냅니다.

밖에서 무엇이 보이는지 대신 확인해 드립니다

더블루캔버스는 공개 경로와 응답 헤더, 버전 노출뿐 아니라 SSH 설정과 방화벽, 계정 권한, SSL 설정, 로그까지 점검하고 위험도와 조치 순서를 정리한 리포트를 드립니다.

무료 진단 신청하기

다른 숏폼 인사이트

숏폼 인사이트 전체 보기