우리 홈페이지, PHP 버전 괜찮을까?
주소를 넣으면 페이지를 한 번만 열어 보고 알려 드려요 (추정)
- 주소를 넣으면 저희 서버가 그 페이지를 한 번 열어 봐요 (브라우저로 들어가는 것과 같아요).
- 관리자 페이지를 찾거나, 다른 주소를 두드리거나, 공격용 요청을 보내지 않아요.
- 입력한 주소는 저장하지 않아요.
어떻게 확인하나요 (수동·1회)
요청 한 번 · 헤더와 첫 화면 HTML만 읽어요
주소를 넣으면 저희 서버가 그 페이지를 한 번 열어 봐요 (브라우저로 들어가는 것과 같아요). 관리자 페이지를 찾거나, 다른 주소를 두드리거나, 공격용 요청을 보내지 않아요. 내가 관리하거나 확인 권한이 있는 홈페이지를 확인해 주세요.
- GET 요청 한 번. 다른 주소로 넘어가면(리디렉트) 최대 3번까지 따라가고, 넘어갈 때마다 주소를 다시 검사해요.
- 전체 5초 안에 끝내고, 첫 화면 HTML은 1MB까지만 읽어요. http/https, 기본 포트(80·443)만 확인해요.
- 쿠키를 보내지 않고, 로그인하지 않고, 같은 사이트에 두 번째 요청을 보내지 않아요.
- 보내는 정보:
User-Agent: plusbeauxjours-php-check/1.0 (+https://plusbeauxjours.com/php-check/)
KISA 기업 대응 수칙은 출처 불명 PoC를 실행하지 말고 버전 확인과 로그 점검으로 판단하라고 안내해요. 이 도구는 그중 밖에서 보이는 절반만 해요.
브라우저에서 직접 확인하는 법
- 크롬이나 엣지에서 우리 홈페이지를 열고 F12(맥은 ⌥⌘I)를 눌러요.
- ‘Network(네트워크)’ 탭을 누르고 새로고침해요.
- 맨 위 문서(주소 이름) 줄을 누르고 ‘Response Headers(응답 헤더)’에서 X-Powered-By와 Server를 찾아요.
- PHP/7.4.33처럼 보이면 그게 밖에서 보이는 버전이에요. 없으면 숨겨진 거예요.
판정 기준표
확실 · 높음 · 보통, 무엇을 보고 판단하는지
| 보이는 표시 | 확신 | 뜻 |
|---|---|---|
| X-Powered-By 헤더의 PHP/x.y.z | 확실 | PHP와 버전 (php.net 기본 설정 expose_php = 1) |
| Server 헤더의 PHP/x.y.z | 확실 | PHP와 버전 |
| PHPSESSID 쿠키 이름 | 높음 | PHP (기본 세션 이름) |
| ci_session · laravel_session 쿠키 이름 | 높음 | CodeIgniter · Laravel |
| wordpress_ · wp-settings- 쿠키 이름 | 높음 | WordPress |
| generator 메타 태그 · X-Generator 헤더 | 높음 | WordPress · Rhymix · XE · Joomla · Drupal |
| 같은 사이트의 /wp-content/ · /wp-includes/ 경로 | 높음 | WordPress |
| var g5_shop_url · var g5_url | 높음 | 영카트5 · 그누보드5 |
| 같은 사이트의 .php 링크 | 보통 | PHP |
PHP 버전은 X-Powered-By, 그다음 Server 헤더에서만 읽고, CMS로 짐작하지 않아요. 헤더에 PHP가 있으면 ‘확실’, 다른 표시만 있으면 ‘가능성 높음’, 아무것도 없으면 ‘흔적 없음(추정)’이에요. HTML 주석, 다른 사이트로 가는 .php 링크, Express·ASP.NET 같은 표시는 근거로 쓰지 않아요.
지원 상태는 php.net 표와 오늘(한국 시간) 날짜로 계산해요. 패치 번호는 10/21 고친 버전과 비교만 하고, 우분투 같은 배포판 빌드(8.1.2-1ubuntu…)는 번호만으로 판단하지 않아요.
PHP 지원 기간표
php.net 기준 · 2026. 10. 23. 확인
| 버전 | 정식 지원 끝 | 보안 지원 끝 (보수 기한) |
|---|---|---|
| PHP 8.2 | 2024-12-31 | 2026-12-31 |
| PHP 8.3 | 2025-12-31 | 2027-12-31 |
| PHP 8.4 | 2026-12-31 | 2028-12-31 |
| PHP 8.5 | 2027-12-31 | 2029-12-31 |
| PHP 8.1 | 지원 종료 2025-12-31 | |
| PHP 8.0 | 지원 종료 2023-11-26 | |
| PHP 7.4 | 지원 종료 2022-11-28 | |
| PHP 7.3 | 지원 종료 2021-12-06 | |
| PHP 7.2 | 지원 종료 2020-11-30 | |
| PHP 7.1 | 지원 종료 2019-12-01 | |
| PHP 7.0 | 지원 종료 2019-01-10 | |
| PHP 5.6 | 지원 종료 2018-12-31 | |
출처: php.net supported versions · php.net EOL · 확인 . 날짜는 그날까지 지원한다는 뜻(마지막 날 포함)이에요. 8.6은 아직 php.net 표에 없어서 ‘지원표에 없음’으로 보여요.
이번 취약점 요약
CVE-2026-109618 · CVE-2026-109619
- 2026-10-21 PHP 팀이 보안 업데이트 8.2.35 · 8.3.36 · 8.4.27 · 8.5.12를 냈어요. 취약점은 CVE-2026-109618, CVE-2026-109619 두 개이고, php.net·GHSA 기준 CVSS v4 9.2(Critical)예요.
- 8.1 이하는 공식 업데이트가 없어요. 7.4·8.0·8.1용 최소 소스 패치가 따로 공개됐지만 정식 지원 버전은 아니에요.
- KISA: 업데이트 후 재시작하지 않으면 메모리에 남은 이전 버전이 계속 동작해 여전히 취약하다고 안내해요. 8.2는 2026-12-31 지원이 끝나서 8.3 이상을 권해요.
- 과기정통부: “호스팅 업체를 이용해 홈페이지를 운영하는 소상공인 등은 이용 중인 호스팅 업체에 보안 업데이트 적용 여부를 확인하면 된다.”
php.net · GHSA-w8hw-w9fx-j79w · NVD CVE-2026-109618 · NVD CVE-2026-109619 · KISA #2574 · KISA #2575 · 정책브리핑
우리가 하지 않는 것
탐색·공격·저장 없음
- /wp-admin, /phpinfo.php, robots.txt, 사이트맵, 파비콘 같은 다른 경로를 열어 보지 않아요.
- 단어 목록 대입, HEAD/OPTIONS 훑기, 폼 전송, 쿠키 되돌려 보내기, 로그인, 공격 코드(PoC) 실행, 포트 스캔을 하지 않아요.
- ‘확인차’ 두 번째 요청을 보내지 않고, 실패해도 다시 시도하지 않아요.
- 주소·결과를 저장하거나 기록하지 않아요. 공개 ‘최근 확인 목록’도 없어요. 정보통신망법 제48조(침입 금지)를 생각해서 이렇게 만들었어요(법령).
- 개발자 참고: 저희가 DNS를 확인한 뒤 실제 접속 사이에 DNS가 바뀌는 틈(리바인딩)은 남아 있어요. 접속은 Cloudflare 네트워크에서 나가고 내부 서비스가 없어서, 남는 위험은 ‘의도하지 않은 공개 페이지를 한 번 연다’ 정도이고 본문은 돌려주지 않아요.
자주 묻는 질문
PHP 흔적 없음 · 그누보드 버전 · 문의 방법
우리 홈페이지 PHP 버전은 어떻게 확인해요?
위 칸에 주소를 넣으면 저희 서버가 그 페이지를 한 번 열어서, 응답 헤더(X-Powered-By, Server)와 HTML에 보이는 표시를 읽어요. 서버가 버전을 숨기면 밖에서는 알 수 없어요. 정확한 버전은 호스팅 업체나 제작사가 서버에서 확인해야 하고, KISA는 웹 서비스가 실제로 쓰는 버전이 php -v 결과와 다를 수 있다고 안내해요.
“PHP 흔적 없음”이면 안전한 건가요?
아니요. 버전을 숨긴 서버가 많아요. 밖에서 안 보인다고 안전하다는 뜻은 아니에요. 이 결과는 추정이라서, 호스팅 업체에 보안 업데이트 적용 여부를 한 번 물어보는 게 확실해요.
그누보드·영카트 버전은 왜 안 나와요?
그누보드5·영카트5는 기본 HTML에 자기 버전 번호를 찍지 않아요. 그래서 스크립트 변수(var g5_url, var g5_shop_url)로 이름까지만 알려 드려요. WordPress는 generator 메타 태그에 버전이 있을 때만 보여 드려요. CMS 버전으로 PHP 버전을 짐작하지도 않아요.
PHP 7.4·8.0·8.1은 언제 지원이 끝났어요?
php.net 기준으로 7.4는 2022-11-28, 8.0은 2023-11-26, 8.1은 2025-12-31에 지원이 끝났어요. 8.2는 2026-12-31까지 보안 수정만 받고, 8.3은 2027-12-31까지예요. 전체 표는 아래 ‘PHP 지원 기간표’에 있어요.
이번 PHP 취약점(CVE-2026-109618·109619)은 어떤 버전이 해당돼요?
2026-10-21에 나온 보안 업데이트는 8.2.35, 8.3.36, 8.4.27, 8.5.12이에요. 이보다 낮은 8.2~8.5 버전이 영향을 받아요(GHSA-w8hw-w9fx-j79w). 8.1 이하는 공식 업데이트가 없어요. PHP 팀이 7.4·8.0·8.1용 최소 소스 패치를 따로 공개했지만 정식 지원 버전은 아니라서, 지원 버전으로 옮기는 게 답이에요.
호스팅 업체에 뭐라고 물어봐요?
결과 아래 문의 문자를 복사해서 보내면 돼요. 핵심은 세 가지예요. 보안 업데이트가 적용됐는지, 적용 후 웹 서비스를 재시작했는지, 지원이 끝난 버전이면 옮기는 일정과 비용이요. 과기정통부도 호스팅을 쓰는 소상공인은 호스팅 업체에 적용 여부를 확인하면 된다고 안내했어요.
이 확인이 해킹이나 불법은 아닌가요?
브라우저로 첫 페이지에 한 번 들어가는 것과 같은 요청 하나만 보내요(다른 주소로 넘어가면 최대 3번까지 따라가요). 관리자 페이지를 찾거나, 다른 경로를 두드리거나, 공격용 요청을 보내지 않아요. 그래도 내가 관리하거나 확인 권한이 있는 사이트만 확인해 주세요. 이 안내는 법률 자문이 아니에요.
입력한 주소는 저장되나요?
아니요. 주소와 결과는 확인하는 동안에만 쓰고 저장하거나 기록하지 않아요. 페이지 주소창이나 브라우저 저장소에도 남기지 않아요. 같은 사이트를 하루 20번까지만 확인하려고, 사이트 이름에서 만든 해시값과 오늘 횟수만 그날 동안 남아요.
출처
모두 2026-10-23 확인
- php.net — Supported Versions
- php.net — Unsupported Branches (EOL)
- php.net — Security advisory: Critical remote code execution vulnerabilities, update now
- GitHub Security Advisory GHSA-w8hw-w9fx-j79w
- NVD CVE-2026-109618 · NVD CVE-2026-109619
- KISA 보호나라 #2574 PHP 제품 보안 업데이트 권고
- KISA 보호나라 #2575 PHP 보안취약점 관련 기업 보안 대응 수칙
- 정책브리핑 (과학기술정보통신부, 2026-10-22)
- php.net — expose_php · php.net — session.name
예시로 먼저 보기
유명·중립 사이트 예시
예시 결과 · 실제와 다를 수 있음 · 2026-10-23 기록. 누르면 그날 한 번 열어 보고 기록해 둔 결과를 보여 드려요. 지금 그 사이트에 다시 요청하지 않아요.
react.dev가 PHP가 아니라는 근거: react.dev 소스 저장소
가상의 예시: 지원이 끝난 PHP 위에 세운 홈페이지
가상의 예시 · 실제 사이트가 아니에요
my-shop.example: 그누보드5 · PHP 7.4 (지원 종료)
- X-Powered-By 헤더
X-Powered-By: PHP/7.4.33 - PHP 기본 세션 쿠키 이름
Set-Cookie: PHPSESSID - 그누보드5 스크립트 변수
var g5_url
my-shop.example은 예시용으로만 쓰는 주소예요(RFC 2606). 그누보드5 · PHP 7.4 사이트가 2026-10-23에 어떻게 보이는지 보여 드려요.
최근 PHP 취약점 보도
- PHP 보안취약점(PHP2Shell) 관련 기업 보안 대응 수칙
- 과기부, 'PHP' 심각한 보안 취약점…'보안 업데이트' 즉시 적용
- "PHP 치명적 결함 발견"… KISA, 보안 업데이트 권고
- PHP 제품 보안 업데이트 권고
- Security advisory: Critical remote code execution vulnerabilities, update now
제목은 원문 그대로예요 · 2026-10-23 확인. 기사·공지에 나오는 기관이나 사이트를 저희가 확인하거나 판단하지 않았어요.