Adam Langley의 TLS 작업과 HTTPS-기본화로의 전환을 쉬운 영어로 정리하고, 자동 인증서, 보안 헤더, 로테이션 같은 모던 HTTPS 배포 습관을 제시합니다.

평문 HTTP는 우편엽서를 보내는 것과 같습니다. 중간에 그걸 다루는 누구나 내용을 읽을 수 있습니다. 더 나쁘게는, 도중에 내용을 바꿀 수도 있습니다. 이는 드문 예외 상황이 아닙니다. 트래픽이 공용 Wi‑Fi, 사무실 라우터, 이동통신사, 또는 공유 호스팅을 건널 때마다 흔히 발생하는 위험입니다.
사람들이 잃는 건 단지 “프라이버시”가 아닙니다. 통제권을 잃습니다. 누군가 트래픽을 읽을 수 있다면 로그인, 세션 쿠키, 이메일, 폼 입력을 수집할 수 있습니다. 누군가 트래픽을 바꿀 수 있다면 광고를 주입하거나 다운로드를 악성 코드로 바꾸고 결제를 조용히 리다이렉트할 수 있습니다. 단순한 연락처 폼조차 방문자가 낯선 사람과 공유하고 싶지 않았던 이름, 전화번호, 비즈니스 정보를 노출할 수 있습니다.
“작은 사이트라서 괜찮다”는 안전지대가 아닙니다. 공격자는 한 개씩 표적을 고르지 않습니다. 검색하고 자동화합니다. 어떤 HTTP 페이지든 쿠키 탈취, 가짜 로그인 상자, 신뢰를 해치는 콘텐츠 주입, 유사 사이트로의 리다이렉트에 쉬운 기회를 제공합니다.
현실적인 작은 예를 들면: 공용 Wi‑Fi에서 카페 메뉴 사이트를 확인하는 사람이 있습니다. 그 페이지가 HTTP로 로드된다면 인근 공격자는 “특별 제공” 버튼을 추가해 수상한 앱을 설치하게 만들 수 있습니다. 사이트 소유자는 결코 알지 못할 수 있지만 손님들은 피해를 입습니다.
그래서 모던 HTTPS 배포의 목표는 단순합니다: 보호를 기본값으로 만드세요. HTTPS는 나중에 일정 잡는 “보안 프로젝트”가 아니라 모든 환경, 모든 도메인, 모든 배포의 출발점이어야 합니다. 사용자들이 별다른 생각 없이 암호화와 무결성을 얻도록 하는 것이 목표입니다.
Adam Langley는 브라우저 팀, 특히 Google의 Chrome에서 이뤄진 조용한 보안 작업을 이끈 잘 알려진 인물 중 하나입니다. 브라우저는 웹의 문지기 역할을 하기 때문에 중요했습니다. 어떤 것이 “충분히 안전한지”, 무엇이 경고를 받을지, 어떤 오래된 옵션을 꺼야 할지를 브라우저가 결정합니다.
사이트 주소를 입력하면 브라우저와 서버는 실제 콘텐츠가 로드되기 전 짧은 인사(핸드셰이크) 대화를 합니다. 암호화된 연결에 합의하고 서버는 인증서로 자신의 정체성을 증명하며 브라우저는 그 증명을 확인한 뒤 신뢰할 수 있는 페이지를 보여줍니다.
대부분 사람들에게 그 핸드셰이크는 마법처럼 느껴지지만, 예전엔 취약했습니다. 양쪽 중 하나라도 오래된 설정을 허용하면 공격자가 연결을 다운그레이드하거나 오래되고 약한 동작을 악용할 수 있었습니다.
Langley는 안전한 경로를 쉬운 경로로 만들도록 돕는 개선을 추진했습니다. 그가 한 작업은 최신 TLS 설계와 브라우저의 전개 방식에 영향을 주었고, 잘못 발급되거나 수상한 인증서를 숨기기 어렵게 만드는 아이디어를 지지했습니다. 즉 HTTPS가 “시스템이 알아서 잘 되길 바라자”에서 “시스템을 검증하고 모니터하자”로 바뀌는 데 기여했습니다.
작은 프로토콜과 정책 변화가 큰 안전 이득을 만듭니다. 수학적인 암호학을 이해할 필요 없이 결과를 체감할 수 있습니다: 약한 옵션으로 되돌아갈 가능성 감소, HTTPS가 “무료로” 느껴질 만큼 빠른 연결, 명확한 인증서 검사, 그리고 휴먼 에러를 줄이는 강한 기본값들.
이런 변화는 모던 HTTPS 배포가 기본이 된 큰 이유 중 하나입니다. 브라우저가 HTTPS를 보너스가 아니라 기본으로 취급하면서 서버, 호스트, 배포 도구들이 뒤따르게 됐습니다.
HTTPS가 보편화된 건 TLS가 기본적으로 더 안전해지고 운영이 덜 번거로워졌기 때문입니다. 세부는 빠르게 깊어질 수 있지만, 일상적인 팀에게 실질적 차이를 만든 몇 가지 변화를 꼽을 수 있습니다.
포워드 시크리시(forward secrecy)는 이렇게 이해하면 됩니다: 누군가 내일 서버의 개인 키를 훔쳐가도, 그들이 지난달에 녹화해둔 트래픽을 복호화할 수 없어야 합니다. 각 연결은 세션 후 버려지는 단기 키를 사용합니다.
운영 관점에서 보면 이는 키 위생을 권장합니다: 규칙적인 로테이션, 합리적인 인증서 수명, 그리고 ‘나중에 교체하자’는 상황을 줄이는 것입니다. 또한 유출의 피해 범위를 줄여 예전 트래픽이 자동으로 노출되지 않게 합니다.
TLS 핸드셰이크는 시간이 지나며 더 빠르고 단순해졌습니다. 속도는 HTTPS를 피하려는 흔한 변명을 줄였고 위험한 성능 최적화를 유지하려는 유혹도 줄였습니다.
TLS 1.3은 또한 정리 작업이었습니다. 실수하기 쉽고 공격 대상이 되기 쉬운 많은 오래된 선택지를 제거했습니다. 다이얼이 줄어들면 실수로 약한 설정을 켜는 경우가 줄어듭니다.
Certificate Transparency는 다른 방식으로 신뢰를 도왔습니다. 도메인에 대해 수상한 인증서가 발급됐는지 더 쉽게 찾아낼 수 있게 해 잘못된 발급이 조기에 발견될 가능성을 높였습니다.
브라우저들은 이러한 변화를 강화하며 생태계를 더 안전한 기본값으로 유도했습니다. 경고는 더 강해졌고, 안전하지 않은 옵션은 비활성화되었으며 ‘기본적으로 안전’이 가장 쉬운 경로가 되었습니다.
커스텀 도메인으로 앱을 배포할 때, 이러한 개선 덕분에 암호화 세부를 손으로 계속 다듬기보다 실제로 장애와 사고를 예방하는 기본에 더 많은 시간을 쓸 수 있습니다: 자동 인증서 갱신, 합리적 보안 헤더, 명확한 키와 인증서 회전 계획 같은 것들입니다.
수년간 HTTPS는 업그레이드처럼 취급됐습니다: 로그인과 결제에 좋으면 괜찮고, 그 밖에는 선택적이라는 사고방식이었습니다. 그런 사고방식은 브라우저가 평문 HTTP를 위험으로 취급하기 시작하면서 깨졌습니다. 주소 표시줄이 경고를 표시하면 사용자는 TLS를 이해하지 못해도 불안함을 느끼고 떠납니다.
검색과 플랫폼 정책도 압박을 더했습니다. 팀들은 “나중에 HTTPS 추가하겠다”는 말이 결국 지원 티켓, 낮은 전환율, 파트너로부터의 어색한 질문으로 돌아온다는 것을 배웠습니다. 내부 도구도 HTTP로 운영하면 느낌이 잘못됩니다. 같은 네트워크 위험이 적용되기 때문입니다.
결과는 새로운 기준입니다: 기본적으로 암호화, 인증서는 자동 갱신, 모니터링은 고객이 문제를 느끼기 전에 잡아냅니다. 큰 변화는 단일 기능이 아닙니다. 문화적 전환입니다. HTTPS는 이제 백업이나 가동 시간처럼 “앱이 작동한다”의 일부가 되었습니다.
실무적으로 “기대된다”는 것은 보통 다음을 의미합니다:
흔한 실패 사례는 이렇습니다: 팀이 커스텀 도메인으로 마케팅 사이트를 런칭합니다. 사이트는 로드되지만 인증서 체인이 잘못되어 일부 브라우저에서 경고가 뜹니다. 대부분 방문자가 ‘계속 진행’할 수 있어도 신뢰는 사라집니다. 자동화와 모니터링이 있으면 이건 무사건이 됩니다: 올바른 인증서가 발급되고 일정에 따라 갱신되며, 어떤 불일치가 생기면 경고가 울립니다.
보안은 일회성 설정이 아닙니다. 배포할 때마다, 인프라를 회전할 때마다, 새 도메인을 추가할 때마다 지켜야 하는 습관입니다.
자동 인증서는 “오늘 HTTPS가 작동한다”와 다음 달에도 신뢰할 수 있는 HTTPS 설정의 차이입니다. 목표는 간단합니다: 각 호스트네임에 인증서를 발급, 갱신은 사람이 개입하지 않게 자동으로, 문제가 생기면 빠르게 알 수 있게 합니다.
사용자가 접속할 수 있는 모든 도메인과 서브도메인(예: www, API 호스트, 테넌트나 프리뷰 서브도메인 포함)을 적어두세요. 지금 반드시 커버해야 할 항목과 차단하거나 리다이렉트할 수 있는 항목을 결정하세요.
대부분 팀은 ACME(대중적인 자동 발급 CA가 사용하는 프로토콜)를 사용합니다. 보통 두 가지 검사 방식 중 하나를 선택합니다:
DNS와 라우팅이 실제로 어떻게 운영되는지에 맞춰 방식을 고르세요. 이상적으로 바라는 형태가 아니라 실제 환경에 맞춰 선택하는 것이 중요합니다.
갱신을 일정에 넣고(예: 매일 작업) 먼저 스테이징이나 드라이런 모드에서 테스트하세요. 배포, 구성 변경, 재시작 후에도 작업이 동작하는지 확인하세요. 로컬 노트북에서만 동작하는 갱신 프로세스는 프로세스가 아닙니다.
TLS는 에지(CDN), 로드밸런서, 또는 앱 서버 내부에서 종료될 수 있습니다. 일관성을 유지하세요. 에지에서 종료한다면 에지→오리진 연결도 특히 로그인과 API의 경우 암호화돼 있는지 확인하세요.
갱신, 갱신 오류, 다가오는 만료를 추적하세요. 실용적 규칙은 30일, 7일, 1일에 알림을 보내는 것입니다. API 인증서가 DNS 토큰 업데이트 실패로 갱신에 실패하면, 첫 날에 경고를 받고 싶지 마지막 순간인 서비스 장애 시에나 알림을 받고 싶진 않을 것입니다.
HTTPS는 트래픽을 암호화하지만 브라우저에게 무엇이 허용되는지, 허용되지 않는지를 알려줄 필요가 있습니다. 그게 바로 보안 헤더의 역할입니다. 에지(로드밸런서, 리버스 프록시, 호스팅 설정)에서 설정해 매 배포에 포함되게 하세요. 특정 앱 빌드에 의존하지 않는 것이 좋습니다.
대체로 놀라움을 거의 주지 않는 소수의 헤더:
max-age=31536000; includeSubDomains (preload는 확신이 설 때만 추가)nosniffstrict-origin-when-cross-originDENY (프레이밍이 정말 필요하면 SAMEORIGIN)HSTS는 추가 주의가 필요합니다. 브라우저가 한 번 학습하면 해당 도메인에 대해 max-age가 만료될 때까지 사용자는 HTTPS로만 접속하게 됩니다. 켜기 전에 모든 리디렉트가 HTTPS로 가는지(루프 없음), includeSubDomains를 사용할 경우 모든 서브도메인이 HTTPS 준비가 되어 있는지, 인증서 커버리지가 도메인 계획(예: www, API 서브도메인 포함)과 맞는지 확인하세요.
CSP는 강력하지만 로그인, 결제 페이지, 분석, 임베디드 위젯을 깨뜨릴 가능성이 가장 큽니다. 단계적으로 적용하세요: 스테이징에서는 리포팅 전용(report-only)으로 시작해 무엇이 차단될지 관찰하고 점진적으로 규칙을 강화하세요.
실용적 예시: 앱이 타사 인증 위젯과 몇 개의 스크립트 번들을 불러온다면 엄격한 CSP는 특정 페이지에서 인증 흐름을 차단해 로그인 실패를 만들 수 있습니다. 스테이징에서 전체 로그인 여정, 비밀번호 재설정, 임베디드 콘텐츠를 테스트해 이를 포착하세요.
헤더 설정은 TLS와 도메인을 관리하는 같은 장소, 배포 설정 옆에 두세요. Koder.ai 같은 플랫폼을 사용해 커스텀 도메인을 배포한다면 헤더도 릴리스 체크리스트의 일부로 다루고 애플리케이션 코드 속에 숨기지 마세요.
회전 계획은 보안이 달력 알림으로 전락하는 것을 막습니다. 또한 인증서 만료나 키 유출로 인한 새벽 2시 장애를 예방합니다.
먼저 무엇을 회전할지 명확히 하세요. 팀은 보통 TLS 인증서에만 집중하지만 개인 키와 앱 뒤의 비밀들도 똑같이 중요합니다.
전형적인 회전 목록에는 TLS 인증서와 그 개인 키, API 키와 웹훅 서명 비밀, DB 비밀번호와 서비스 계정, 세션 서명 키와 암호화 키, 서드파티 토큰(결제, 이메일, 분석)이 포함됩니다.
다음으로 소유권과 간단한 일정을 정하세요. 한 사람(또는 역할)을 책임자로 정하고 한 명의 백업을 지정하세요. 일정은 현실적으로: 위험을 줄일 만큼 충분히 자주, 사람들이 건너뛰지 않을 정도로 드물게. 가능하면 자동으로 갱신되는 단명 자격 증명을 선호하고, 아직 단명으로 못 하는 소수의 예외를 문서로 남기세요.
회전 계획은 ‘회전이 성공했다’를 증명할 수 있어야 작동합니다. 각 회전을 작은 배포처럼 다루세요: 새 값이 사용 중인지 확인하고 이전 값이 더 이상 받아들여지지 않음을 증명하세요.
간단한 런북은 반복 가능하게 만듭니다:
마지막으로 실패 연습을 하세요. 회전 작업은 잘못될 수 있습니다: 잘못된 인증서 체인, 빠진 중간 인증서, 비밀 이름 오타 등. 빠르고 단순한 롤백 옵션을 준비하세요. 스냅샷과 롤백을 지원하는 플랫폼(Koder.ai 같은)을 사용하면 마지막 알려진 정상 상태로 복구하고 TLS 핸드셰이크를 다시 확인하는 연습을 하세요. 이런 습관이 모던 HTTPS 배포를 일회성 설정이 아닌 안정적인 루틴으로 만듭니다.
현대 도구가 있어도 팀은 몇 가지 반복되는 실수에 걸립니다. 대부분이 ‘어려운 암호학’ 문제가 아닙니다. 일상적인 습관이 안전한 설정을 취약하게 만듭니다.
혼합 콘텐츠(mixed content)가 대표적입니다: 페이지는 HTTPS로 로드하지만 스크립트, 이미지, 폰트, 분석 태그가 HTTP로 남아 있으면 브라우저가 차단하거나(또는 로드해 취약점을 만들 수 있습니다). 브라우저 콘솔의 빠른 확인과 서드파티 임베드 스캔으로 초기에 잡아낼 수 있습니다.
또한 클라이언트에서 ‘테스트용으로 인증서 검증을 끈다’는 임시 설정을 켜두는 것도 은밀한 실패입니다. 그 임시 플래그는 모바일 빌드나 백그라운드 서비스에 실수로 배포되곤 합니다. 테스트가 필요하면 신뢰 체인을 제대로 고치세요(올바른 호스트명, 유효한 인증서, 정확한 시간 설정). 검증은 협상의 여지가 없는 항목으로 다루세요.
인증서 만료 문제는 자동화돼도 모니터링되지 않아서 여전히 흔합니다. 자동화에는 안전망이 필요합니다: 갱신 실패 시 알림과 도메인별 남은 일수를 쉽게 볼 수 있는 방법이 필요합니다.
HSTS처럼 엄격한 정책은 조심하세요. 너무 일찍 켜면 서브도메인이나 인증서가 잘못 설정되었을 때 사용자를 잠글 수 있습니다. 점진적으로 적용하고 짧은 max-age로 시작하며 복구 계획을 마련하세요.
마지막으로 모든 곳에 하나의 와일드카드 인증서를 쓰는 것을 피하세요. 유출되거나 긴급 교체가 필요하면 모든 서비스가 동시에 다운될 수 있습니다. 앱이나 환경별로 인증서를 분리하는 것이 더 안전한 기본입니다.
Koder.ai에서 커스텀 도메인으로 앱을 내보내고 배포할 때도 같은 규율을 지키세요: 서드파티 자산이 HTTPS인지 확인하고, 클라이언트 검증을 유지하며, 갱신과 교체가 놀랍지 않게 알림을 설정하세요.
마지막 단계에 숨어있는 HTTPS 실수들이 있습니다. 한 브라우저에서 보기엔 괜찮아 보여도 실제 사용자, 크롤러, 모바일 앱에서는 깨질 수 있습니다. 릴리스를 끝내기 전에 도메인별로 몇 가지 검사를 배포 과정에 포함하세요.
이 목록을 도메인별로 한 번씩, CDN·로드밸런서·DNS 변경 후 다시 실행하세요:
간단한 시나리오 예: 커스텀 도메인을 추가했고 인증서는 그것을 커버하지만 리디렉트는 여전히 example.com에서 www.example.com으로 HTTP로 보내는 경우가 있습니다. 한 URL에서는 “보안”처럼 보이지만 첫 홉이 다운그레이드되어 로그인 쿠키를 깨뜨립니다.
Koder.ai 같은 호스팅 플랫폼에서 배포하더라도 같은 검사를 하세요. 호스팅과 자동 인증서는 노력을 줄여주지만 사용자가 실제 보게 될 정확한 도메인 이름, 리디렉트, 헤더를 검증하는 것을 대체하지 않습니다. 문제가 생기면 스냅샷과 롤백으로 오래 걸리는 장애를 피할 수 있습니다.
작은 SaaS 출시를 상상해보세요: 공개 랜딩 페이지(마케팅 사이트)와 고객이 계정을 관리하는 로그인 대시보드가 있습니다. app.yourbrand.com 같은 깔끔한 커스텀 도메인을 원하고 첫날부터 HTTPS를 기본으로 하고 싶습니다.
먼저 호스팅 설정에서 커스텀 도메인을 연결하고 모든 요청이 HTTPS로 가도록 하세요. 베어 도메인과 www 버전(사용한다면), 대시보드 서브도메인 모두 테스트하세요. 목표는 하나의 정규 URL이고 다른 모든 버전은 그곳으로 리디렉트되게 하는 것입니다.
다음으로 혼합 콘텐츠를 주시하세요. HTTPS로 로드되지만 스크립트, 이미지, 폰트, API 콜이 http://를 사용하면 조용히 HTTPS가 깨집니다. 랜딩 페이지 자산, 분석 스니펫, 대시보드가 호출하는 API 엔드포인트를 점검하세요.
리디렉트가 정확하고 모든 서브도메인을 파악한 뒤에야 HSTS를 켜세요. 점진적으로 적용합니다: 먼저 짧은 max-age로 시작해 HTTP가 필요한 것이 없는지 확인한 뒤 값을 늘리세요. 서브도메인을 포함할 계획이면 모든 서브도메인이 HTTPS 준비가 되었는지 확인하세요.
모던 HTTPS 배포에서 인증서는 달력 알림이 아니라 배관(plumbing)으로 취급하세요. 자동 갱신을 설정하고 만료 및 갱신 실패에 대해 최소 하나의 경고(이메일 또는 페이저)를 설정하세요. Koder.ai 같은 플랫폼을 사용해 커스텀 도메인과 호스팅을 한다면 “갱신 확인됨”을 릴리스 절차의 일부로 만드세요.
좋은 주간 유지보수 루틴은 짧지만 일관됩니다:
작고 규칙적인 점검이 금요일 밤의 긴급 수리보다 낫습니다.
안전한 HTTPS는 지루할 때 유지하기 쉽습니다. 목표는 이러한 관행을 매번 일어나는 습관으로 만드는 것입니다. 특정 사람이 세부를 기억하는 데 의존하는 특별 프로젝트가 되지 않게 하세요.
체크리스트를 릴리스 템플릿으로 만드세요. 스테이징과 프로덕션 모두 같은 단계를 사용해 어떤 앱을 배포하든 모던 HTTPS 배포가 동일하게 보이게 하세요.
실용적 템플릿에는 보통 자동 인증서 갱신과 알림 확인, 주요 헤더(HSTS, 가능한 경우 CSP, nosniff 등) 존재 여부 검증, 리디렉트와 TLS 설정이 정책과 일치하는지 확인, 깨끗한 브라우저에서의 배포 후 빠른 테스트와 기본 TLS 검사, 무엇을 어떻게 검증했는지 정확히 기록하는 단계가 포함됩니다.
실수는 예상하세요. 빠르게 복구할 계획을 세우세요. 잘못된 헤더나 TLS 조정은 로그인, 임베디드 콘텐츠, API 호출을 깨뜨릴 수 있으므로 롤백을 우선 단계로 만드세요. Koder.ai를 사용하면 Planning Mode, 배포와 호스팅, 스냅샷과 롤백으로 변경을 단계별로 적용하고 알려진 정상 상태로 빠르게 돌아갈 수 있습니다. 소스 코드를 내보낼 수 있으면 같은 설정을 다른 곳에서 재현해야 할 때도 도움이 됩니다.
짧은 배포 노트를 항상 같은 곳에 남기세요. 무엇을 바꿨는지(예: “HSTS preload 활성화” 또는 “중간 체인 교체”), 기대한 동작, 릴리스 후 수행한 정확한 검사들을 적어두세요.
마지막으로 인증서와 회전 계획이 흐지부지되지 않도록 매달 짧은 검토를 예약하세요. 갱신 이벤트와 만료 경고, 헤더 변경 및 관련 버그 리포트, 인증서 회전 로그와 키 소유권, 모니터링에서의 예상치 못한 TLS 핸드셰이크 실패를 훑어보세요.
작고 규칙적인 점검이 금요일 밤의 비상수리보다 항상 이깁니다.
HTTP는 데이터가 경로상 누구에게나 읽히거나 수정될 수 있게 보냅니다(공용 Wi‑Fi, 라우터, 프록시, 통신사 등). HTTPS는 암호화와 무결성을 제공해 로그인, 쿠키, 폼, 다운로드가 가볍게 가로채이거나 변경되지 않도록 합니다.
수동 공격자는 세션 쿠키를 탈취해 계정을 탈취할 수 있습니다. 능동 공격자는 콘텐츠를 주입하거나 교체할 수 있습니다(가짜 로그인 폼, 악성 파일로 바꾼 다운로드, 결제 리다이렉트, 원치 않는 광고 등). 문제는 자동화입니다: 스캐너들이 대규모로 HTTP 페이지를 찾아냅니다.
간단히 말하면 다음을 지키세요:
대부분의 팀은 세부 설정을 손보려 하기보다 ‘안전한 기본값’을 따르는 것이 낫습니다.
포워드 시크레시는 누군가 서버의 개인 키를 나중에 훔쳐가더라도, 과거에 기록한 트래픽을 복호화할 수 없게 만듭니다. 키 유출의 피해 범위를 줄여줍니다.
Certificate Transparency는 인증서 발급을 더 투명하게 만들어 도메인에 대해 잘못 발급된 인증서를 더 쉽게 찾아낼 수 있게 합니다. 실무적으로는 모니터링과 책임 추적을 개선해 잠재적 문제를 빨리 발견하게 합니다.
기본 선택: 포트 80과 라우팅을 제어할 수 있고 가장 간단한 설정을 원하면 **HTTP-01(HTTP 챌린지)**를 사용하세요.
와일드카드(*.example.com)가 필요하거나 포트 80을 열 수 없고 DNS 업데이트 자동화가 가능한 경우 **DNS-01(DNS 챌린지)**가 더 적합합니다.
최소한으로 모니터링할 항목:
자동화만 하고 경고가 없으면 사용자 불만이 나오기 전까지는 문제가 드러나지 않습니다.
먼저 충돌을 적게 일으키는 소수의 헤더부터 설정하세요:
Strict-Transport-Security (처음엔 짧은 max-age로 시작)X-Content-Type-Options: nosniffReferrer-Policy: strict-origin-when-cross-origin단계적으로 적용하세요:
CSP는 서드파티 스크립트, 인증 위젯, 인라인 스크립트 때문에 가장 자주 깨집니다.
회전은 작은 배포처럼 취급하세요:
Koder.ai 같은 플랫폼을 쓰면 Planning Mode로 변경을 단계적으로 적용하고 스냅샷/롤백으로 신속 복구할 수 있습니다.
X-Frame-Options: DENY (또는 필요하면 SAMEORIGIN)Permissions-PolicyHSTS는 부작용이 커서 서서히 적용하세요.