콘텐츠로 건너뛰기

🛡️ 웹사이트 보안 진단

URL만 입력하면 보안 관련 응답 헤더(HSTS, CSP, X-Frame-Options 등)와 Mixed Content를 진단합니다.

완전 무료 가입 불필요 서버 처리 로그 · DB 없음 레이트 리밋 5 개 언어 다크 모드

⚠️ 요청은 DevLab 서버에서 이루어집니다. 사설 IP 주소와 localhost는 허용되지 않습니다.

📖 이 진단으로 알 수 있는 것

이 진단은 한 번의 요청으로 돌아오는 범위 — 응답 헤더, 쿠키 속성, TLS 사용 방식 — 에서 외형적으로 알 수 있는 보안 설정을 점검합니다. 애플리케이션 취약점은 찾지 못합니다. SQL 인젝션이나 권한 관련 구멍은 여기가 만점이어도 얼마든지 존재합니다. 여기서 보는 것은 "설정 한 줄로 막을 수 있는 입구가 열려 있지 않은가"이며, 비용 대비 효과가 가장 높은 층입니다.

판정 항목 무엇을 보는가 걸렸을 때의 대처
쿠키의 HttpOnly 적용되면 document.cookie로 읽을 수 없게 됩니다. XSS가 성공해도 세션 ID를 빼내지 못합니다. 세션 쿠키에는 반드시 붙입니다. PHP라면 session.cookie_httponly = 1. JS에서 읽어야 하는 값은 애초에 세션 쿠키와 분리된 별도 쿠키로 두세요 — "읽고 싶으니 뺀다"는 본말전도입니다.
쿠키의 SameSite 다른 사이트에서 온 요청에 쿠키를 실을지 제어합니다. CSRF에 대한 구조적 대책이며 토큰 방식과 함께 사용합니다. 원칙은 Lax, 결제 등 중요한 조작은 Strict. None으로 한다면 Secure가 필수이며, 없으면 모던 브라우저는 쿠키째 버립니다. SSO나 iframe 임베드가 갑자기 안 되는 전형적인 원인입니다.
서버 정보 노출 Server: nginx/1.18.0X-Powered-By: PHP/8.1.2는 알려진 취약점을 가진 버전을 공격자에게 알려줍니다. nginx는 server_tokens off;, PHP는 expose_php = Off. 이것은 시간 벌기이지 방어가 아닙니다 — 숨기는 것보다 그 버전을 실제로 올리는 것이 본질적인 대책입니다.
혼합 콘텐츠 (Mixed Content) HTTPS 페이지에서 http:// 스크립트나 이미지를 읽고 있는 상태. 스크립트는 브라우저가 차단하고 이미지는 자물쇠 표시가 사라집니다. 삽입 URL을 https://로 고칩니다. 외부 서비스가 HTTPS 비대응이라면 그 서비스를 계속 쓸지 판단해야 합니다. 이행기에는 Content-Security-Policy: upgrade-insecure-requests로 자동 승격시키는 방법도 있습니다.

여기가 만점이어도 그것은 밖에서 보이는 설정이 정돈되어 있다는 의미일 뿐입니다. 인증·인가 구현, 입력값 처리, 의존 라이브러리의 알려진 취약점은 따로 확인해야 합니다. 우선 composer auditnpm audit 같은 의존성 감사부터 시작하는 것이 현실적입니다.