본문 바로가기
MAKESITE

점검 항목 · 보안

비공개 파일이 주소 추측으로 열림

메뉴에 없다는 것은 사람이 못 찾는다는 뜻이지 열리지 않는다는 뜻이 아닙니다. 주소를 그대로 입력하면 백업본도 설정 파일도 그냥 열립니다.

심각도 높음 보안 무료 스캔 판정 항목 /check/forced-browsing

01DEFINITION

한 줄로 말하면

링크로 연결하지 않았을 뿐 파일은 그 자리에 있습니다. 백업 파일, 설정 파일, 개발 중 올려 둔 압축본은 주소를 그대로 입력하면 열립니다. 공개하지 않았다는 것과 접근을 막았다는 것은 다른 말이고, 침해 사고의 상당수가 이 차이에서 시작합니다.

02RISK

없으면 무슨 일이 생기나

가장 흔한 것은 배포 직전에 만든 백업입니다. 폴더째 압축해 웹 루트에 두고 작업한 뒤 지우는 것을 잊습니다. 자동화 도구는 site.zip · backup.tar.gz · www_20260101.zip 처럼 흔한 이름 수백 개를 그대로 넣어 보고, 하나라도 200 이 돌아오면 사이트 전체를 통째로 내려받습니다. 이때 넘어가는 것은 소스만이 아니라 데이터베이스 접속 정보가 든 설정 파일입니다.

두 번째는 편집기와 버전 관리가 남기는 흔적입니다. config.php.bak · .env · .git/ 같은 것들인데, 이 중 .git 이 통째로 열려 있으면 커밋 기록까지 복원됩니다. 과거에 실수로 커밋했다가 지운 비밀번호도 기록에는 남아 있어서, 지금 코드가 깨끗해도 소용이 없습니다.

세 번째는 개발 중에 올려 둔 도구입니다. 파일 관리자, 데이터베이스 관리 도구, 임시로 만든 업로드 폼 같은 것들이 인증 없이 남아 있는 경우입니다. 이쪽은 열리는 순간 파일을 읽는 정도가 아니라 쓸 수 있게 되므로, 이 항목에서 나오는 사고 중 가장 크게 번집니다.

03CHECK IT YOURSELF

직접 확인하는 방법

아래는 저희를 거치지 않고 지금 해 보실 수 있는 방법입니다. 결과를 저희에게 보내실 필요도 없습니다.

  1. 01
    흔한 이름을 그대로 넣어 본다

    200 이 돌아오는 것이 있으면 그 자리에 파일이 있는 것입니다. 크기가 같이 큰지도 함께 보십시오 — 압축본이면 응답이 수십 메가입니다.

    $ for f in backup.zip site.zip www.tar.gz .env config.php.bak db.sql; do
        printf "%-16s %s\n" "$f" "$(curl -s -o /dev/null -w '%{http_code} %{size_download}' https://example.com/$f)"
      done

나머지 확인 방법 2단계는 셀프수리 가이드에 있습니다.

04HOW TO FIX

고치는 방법

서버 환경에 따라 적을 자리가 다릅니다. 아래는 가장 흔한 구성 기준이고, 적용 전에 현재 설정을 백업하십시오.

웹 루트 밖으로 옮긴다 — 이것이 첫 번째다

설정 파일과 백업은 애초에 웹에서 닿는 자리에 두지 않는 것이 정답입니다. 서버 설정으로 막는 것은 설정이 살아 있는 동안만 유효하지만, 파일이 그 자리에 없으면 설정이 날아가도 안전합니다. 재배포나 서버 이전 때 설정만 사라지는 일이 실제로 자주 일어납니다.

남길 수 없는 것은 이름으로 막는다
업로드 폴더의 실행을 끈다
조치 코드는 셀프수리 가이드에 있습니다. 서버 구성별 설정 원문 3단계와, 귀사 사이트에서 실제로 관찰된 값이 함께 실립니다 — 무엇을 어디에 적어야 하는지가 정해집니다.
가이드 안내 보기 · 먼저 무료로 진단받기
이미 열람권을 구매하셨다면 안내 메일의 가이드 링크로 바로 열립니다 — 링크를 잃으셨다면 문의 주시면 다시 보내 드립니다.
주의. 이 항목은 「무엇을 켜야 하나」가 아니라 「무엇이 거기 있나」를 묻습니다. 그래서 설정을 고친 뒤에도 한 번은 파일 목록을 눈으로 훑어 보셔야 합니다. 작업 중에 만든 임시 파일은 규칙에 안 걸리는 이름을 갖고 있는 경우가 많습니다.

05FAQ

자주 묻는 질문

주소를 모르면 못 여는 것 아닌가요

사람은 못 찾지만 도구는 찾습니다. 흔한 이름 목록으로 훑는 것이 기본이고, 그 밖에도 경로가 새는 자리가 많습니다. 오류 화면에 찍힌 절대 경로, 검색엔진에 잡힌 옛 링크, 브라우저 확장이 수집한 방문 기록 같은 것들입니다. 「모를 것이다」를 방어로 세지 않는 것이 이 항목의 요지입니다.

.git 이 열려 있으면 정확히 무엇이 넘어가나요

커밋 기록 전체입니다. 도구 하나로 저장소를 그대로 복원할 수 있고, 그러면 현재 소스뿐 아니라 과거에 지운 것까지 복원됩니다. 실수로 커밋했다가 다음 커밋에서 지운 접속 정보가 가장 흔한 피해입니다. 지금 코드에 없다는 것은 안전의 근거가 되지 않습니다.

백업을 웹 루트에 두면 안 되는 이유가 뭔가요

백업은 정의상 사이트에서 가장 값나가는 파일 하나로 압축된 것이기 때문입니다. 한 번의 요청으로 전부를 가져갈 수 있고, 다운로드는 정상 트래픽으로 보여 눈에 띄지도 않습니다. 백업이 필요하면 웹에서 닿지 않는 경로나 별도 저장소에 두십시오.

차단 규칙을 넣었는데 파일이 열립니다

규칙이 걸리는 범위를 확인하십시오. .htaccess 는 그 폴더와 하위에만 적용되고, 서버 설정에서 AllowOverride 가 꺼져 있으면 아예 읽히지 않습니다. 그리고 정적 파일을 앞단 캐시나 CDN 이 대신 주고 있다면 원본 서버의 규칙을 지나갑니다. 어느 쪽인지는 요청 헤더로 가릴 수 있습니다.
여기까지는 항목 일반론입니다. 무엇이고 왜 문제이며 어떻게 고치는지는 감출 이유가 없어 그대로 적었습니다. 리포트에 들어가는 것은 귀사 사이트에서 실제로 어떤 값이 나왔는지 — 어느 주소의 어느 응답인지, 그 환경에서 어떤 순서로 적용해야 하는지, 예상 공수가 얼마인지입니다. 이 페이지만 보고 직접 고치셔도 되고, 실제로 그러시라고 적어 두었습니다.

GET STARTED

내 사이트는
이 항목을 통과할까요

주소만 넣으시면 이 항목을 포함해 58가지를 판정해 점수와 실패 개수를 보여 드립니다. 로그인도, 소유 확인도 필요 없습니다 — 전부 밖에서 관찰만 하는 항목이기 때문입니다.

무료 스캔 문의하기 로그인