5분 안에 웹사이트에 security.txt 파일 추가하기 (Generator 활용)

발행: (2025년 12월 4일 오전 12:53 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

2026년에 웹사이트를 운영하고 있다면, 보안에 신경을 쓰고 있을 가능성이 높습니다.
HTTPS, HSTS, CSP를 이미 적용했을 수도 있고, 버그 바운티 프로그램을 운영하고 있을 수도 있습니다.
하지만 대부분의 사이트가 아직 놓치고 있는 아주 작은 텍스트 파일이 하나 있습니다:

/.well-known/security.txt

이 파일은 보안 연구원에게 사이트에서 취약점을 발견했을 때 어떻게 연락하면 되는지를 알려주는 간단한 파일입니다.

security.txt란?

security.txt는 웹사이트의 보안 연락처 정보를 공개하기 위한 제안 표준(RFC 9116)입니다.
robots.txt와 비슷한 방식으로 동작합니다:

파일목적
robots.txt검색 엔진에 사이트를 어떻게 크롤링할지 알려줍니다
security.txt보안 연구원에게 취약점을 보고하는 방법을 알려줍니다

파일은 일반적으로 다음 위치에 존재합니다:

https://example.com/.well-known/security.txt

파일 안에는 다음과 같은 정보를 나열합니다:

  • 연락처(이메일 또는 URL)
  • 보안 정책에 대한 링크
  • 선택 사항: PGP 키, 감사 페이지, 채용 정보 등

버그를 발견한 사람이 해당 URL을 방문해 안내에 따라 보고하면, 어디에 보내야 할지 추측할 필요가 없습니다.

왜 중요한가?

  • 명확한 보고 창구가 없어서 많은 보안 이슈가 보고되지 않습니다.

  • security.txt 파일은 “뭔가를 발견하면, 여기로 알려주세요.” 라는 메시지를 전달합니다.

  • 작은 SaaS, 인디 프로젝트, 사이드 프로젝트라도 아래와 같은 한 줄만 있으면 더 성숙해 보입니다:

    Policy: https://example.com/security-policy
    Contact: mailto:security@example.com
  • HTTPS를 통해 제공되는 작은 텍스트 파일이며, 가끔 업데이트하면 되는 “10분 작업, 나중에 큰 도움이 되는” 작업 중 하나입니다.

포함할 수 있는 필드

표준에서는 여러 필드를 정의하고 있습니다. 모두 사용할 필요는 없으며, 가장 흔히 쓰이는 필드는 다음과 같습니다:

필드예시
ContactContact: mailto:security@example.com
Contact: https://example.com/security-contact
ExpiresExpires: 2026-01-01T00:00:00Z
PolicyPolicy: https://example.com/security-policy
AcknowledgmentsAcknowledgments: https://example.com/security-acknowledgments
EncryptionEncryption: https://example.com/pgp-key.txt
HiringHiring: https://example.com/careers
CanonicalCanonical: https://example.com/.well-known/security.txt

# 로 주석을 달 수도 있습니다:

# Security contact for Example Corp
Contact: mailto:security@example.com
Policy: https://example.com/security-policy
Expires: 2027-01-01T00:00:00Z

그게 전부입니다—구조화된 텍스트 파일일 뿐입니다.

security.txt를 직접 만들기

  1. RFC(또는 블로그 글)를 읽고 문법을 이해합니다.
  2. 필요한 필드를 결정합니다.
  3. 예시를 복사·붙여넣고 사이트에 맞게 수정합니다.
  4. Expires 날짜가 미래의 유효한 타임스탬프인지 확인합니다.
  5. 파일을 security.txt로 저장하고 /.well-known/에 배치한 뒤 배포하고 테스트합니다.

생성기 사용하기

온라인 생성기가 여러 개 있습니다. 그 중 CodersTool security.txt generator 예시:

  1. 브라우저에서 생성기를 엽니다.
  2. 핵심 필드(Contact, Policy, Expires 등)와 선택 필드를 입력합니다.
  3. Generate 버튼을 클릭합니다.
  4. 출력 결과를 복사하거나 파일을 다운로드합니다.
  5. security.txt로 저장하고 /.well-known/에 배포합니다.

생성된 스니펫 예시:

# security.txt for Example SaaS
Contact: mailto:security@example.com
Policy: https://example.com/security-policy
Acknowledgments: https://example.com/security-acknowledgments
Expires: 2027-01-01T00:00:00Z
Canonical: https://example.com/.well-known/security.txt

로그인, 프로젝트 설정, CLI 필요 없이 바로 사용할 수 있습니다.

다양한 플랫폼에 security.txt 배포하기

목표는 언제나 같습니다: 파일을 다음 경로에서 제공하도록 합니다.

https://yourdomain.com/.well-known/security.txt

배포 방법은 사용 중인 스택에 따라 달라집니다.

정적 사이트 (HTML/CSS/JS)

사이트 루트에 .well-known 폴더를 만들고 파일을 넣습니다:

/your-site-root/
  index.html

  /.well-known/
    security.txt

보통 방식대로 폴더를 업로드하고 테스트합니다:

https://yourdomain.com/.well-known/security.txt

정적 사이트 생성기 (Hugo, Jekyll 등)

static 또는 public 폴더에 .well-known/security.txt를 추가해 최종 빌드 결과에 포함되도록 합니다.

Laravel / PHP

옵션 A – 정적 파일

/public/
  index.php

  /.well-known/
    security.txt

Laravel은 웹 서버가 파일을 직접 제공하도록 합니다.

옵션 B – 동적 라우트 (실시간 생성하고 싶을 때)

// routes/web.php
Route::get('/.well-known/security.txt', function () {
    return response(file_get_contents(public_path('.well-known/security.txt')))
        ->header('Content-Type', 'text/plain');
});

.NET / IIS

  1. 사이트 루트에 .well-known 디렉터리를 생성합니다.
  2. security.txt를 넣습니다.
  3. IIS가 .txt 파일을 제공하도록 설정되어 있는지 확인합니다(기본 설정은 보통 허용).
/wwwroot/
  web.config

  /.well-known/
    security.txt

ASP.NET Core (Kestrel + 리버스 프록시)

  • .well-known/security.txtwwwroot에 두거나
  • 텍스트 파일을 반환하는 라우트를 매핑합니다.

CDN / Cloudflare / Fastly

  • 오리진 서버가 /.well-known/security.txt를 제공하는지 확인합니다.
  • CDN가 해당 경로를 차단하거나 재작성하지 않는지 검증합니다.
  • CDN 자체에 security.txt 기능이 있다면, 원본 파일을 그대로 통과시킬지 여부를 결정합니다.

배포 확인하기

  1. 브라우저에서 https://yourdomain.com/.well-known/security.txt에 접속합니다.

  2. 만든 평문 내용이 보이면 성공입니다.

  3. 옵션으로 curl 같은 도구를 사용합니다:

    curl -I https://yourdomain.com/.well-known/security.txt

    응답 상태가 200 OK이고 Content-Typetext/plain인지 확인합니다.

검증이 끝났다면, 이제 사이트는 보안 연구원에게 명확하고 표준화된 연락 방법을 제공하게 됩니다.

Back to Blog

관련 글

더 보기 »

SaaS IA 뉴스

SaaS IA 뉴스용 커버 이미지 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazon...