- 바코드 생성하기
- simpe ftp
- swagger 500 error
- asp ftp
- asp.net core swagger
- 말줄임표시
- javascript redirection
- TempData
- jquery 바코드생성
- 강제이동
- SSD 복사
- XSS방어
- 404에러페이지
- javascript 바코드 생성
- 타임피커
- 맥 오라클설치
- asp.net dropdownlist
- django 엑셀불러오기
- 하드 마이그레이션
- php 캐쉬제거
- JavaScript
- 하드 윈도우 복사
- XSS PHP
- asp.net Select
- 원격ftp
- Mac Oracle
- ViewData
- ViewBag
- asp.net core Select
- ASP.Net Core 404
웹개발자의 기지개
[PHP] 긴급 보안 취약점 관련 작업하기 - 261022 일자 본문
[php.ini]
session.upload_progress.enabled = 0
session.use_strict_mode = 1
[PHP 5.5 이상 버전 (PHP 5.5, 5.6)]
session.use_strict_mode 설정은 PHP 5.5.0 버전에서 처음 도입
그대로 사용 가능합니다. 해당 버전들에서는 php.ini에 동일하게 명칭이 존재하며 기본값은 0 (Off)으로 설정되어 있습니다.
보안 권장 사항: 세션 고정(Session Fixation) 공격을 막기 위해 반드시 session.use_strict_mode = 1 (또는 On)로 설정하여 켜두는 것이 안전합니다.
[PHP 5.4 이하 버전에서 똑같이 해결하는 방법]
ini_set('session.use_strict_mode', '1');
ini_set('session.cookie_httponly', '1'); // 스크립트의 쿠키 탈취 방지 (XSS 예방)
session_start();
// 1. 세션 내부에 발급된 적이 있는 정상적인 세션인지 표시하는 플래그를 검사
if (!isset($_SESSION['CREATED_VALID'])) {
// 서버가 직접 새로 발급한 세션이 아니라면, 세션 ID를 안전하게 강제 재생성
session_regenerate_id(true);
$_SESSION['CREATED_VALID'] = true;
}
로그인 처리 if 문에서 로그인 처리 코드 사이에
$_SESSION['CREATED_VALID'] = true; 추가
[PHP7]
1. 일반적인 Apache 환경 (mod_php 방식)
호스팅 서버가 Apache 웹 서버의 모듈 방식으로 PHP를 실행 중이라면, 루트 디렉토리의 .htaccess 파일에 아래와 같이 추가하면 됩니다.
<IfModule mod_php7.c>
php_value session.use_strict_mode 1
</IfModule>
※ 서버 환경에 따라 mod_php7.c 대신 mod_php.c를 적어야 할 수도 있으므로, 적용이 안 된다면 <IfModule mod_php.c>로 감싸거나 아예 php_value ... 한 줄만 적어보세요.
2. 고속 서버 환경 (PHP-FPM / FastCGI 방식)
최근 대부분의 PHP 7 호스팅은 성능을 위해 Apache 모듈 대신 PHP-FPM(FastCGI) 방식을 사용합니다. 이 경우 .htaccess에 php_value를 적으면 서버가 이를 인식하지 못하고 500 Internal Server Error가 발생합니다
이때는 .htaccess 대신 .user.ini 파일을 이용해야 합니다.
(1) 웹사이트 최상위 루트 디렉토리(public_html 또는 www)에 .user.ini 라는 이름의 새 파일을 생성합니다.
(2) 파일 내용에 아래와 같이 한 줄만 적고 저장합니다.
session.use_strict_mode = 1
※ .user.ini 파일은 수정 후 서버가 인식하는 데 약 5분(기본값 300초) 정도 시간이 걸릴 수 있습니다.
3. 가장 확실하고 안전한 방법: PHP 소스 코드 적용
만약 호스팅 업체가 보안상의 이유로 .htaccess나 .user.ini를 통한 PHP 설정 조작을 모두반드시 세션이 시작되는 session_start(); 함수 호출 바로 전에 넣어주어야 합니다.
반드시 세션이 시작되는 session_start(); 함수 호출 바로 전에 넣어주어야 합니다.
<?php
// 세션 보안 강화 설정 추가
ini_set('session.use_strict_mode', '1');
ini_set('session.cookie_httponly', '1'); // 스크립트의 쿠키 탈취 방지 (XSS 예방)
// 그 다음 세션 시작
session_start();
?>
임시 완화 조치
- CVE-2026-109618
파일 업로드가 필요 없는 애플리케이션: post_max_size = 8M로 설정
파일 업로드가 필요한 애플리케이션: post_max_size = 32M로 설정
- CVE-2026-109619
세션 업로드 진행률 기능 비활성화 : session.upload_progress.enabled = 0
※ mod_php환경에선 임시 조치도 불가능 하며 근본적으로 해결원할시는 반드시 PHP 공식 보안 패치(버전 업데이트)를 적용
- session.upload_progress.enabled = 0 (파일 업로드 진행률 표시 기능 끄기)
- memory_limit = -1 (프로그램이 바꿀 수 없도록 관리자 설정으로 지정, 예: PHP-FPM pool의 php_admin_value)
- post_max_size 낮게 설정 (업로드가 필요 없으면 8M, 필요하면 32M 수준), upload_max_filesize는 post_max_size보다 작게 유지
- PHP 8.5 사용 시 fatal_error_backtraces = 0 추가
php 7.3.33 -> fpm 으로 재설치 후 변경
session.upload_progress.enabled On -> off
session.use_strict_mode = 0 -> 1
post_max_size= 50 -> 32
참고사이트
[1] https://www.php.net/archive/2026.php#2026-10-21-5
[2] https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w
[3] https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp
'PHP' 카테고리의 다른 글
| [PHP] 랜덤하게 쿼리 목록을 가져오기 - 페이징, 조건문 유지 (0) | 2026.10.24 |
|---|---|
| [PHP] 초간단 랜덤 숫자 얻기 (0) | 2026.07.20 |
| [PHP] 체크박스에서 배열로 처리하기 (특정 문자열 체크 여부) (0) | 2026.06.15 |
| [PHP] PHP7 에서 PHP8 마이그레이션할때 주의할 점 (0) | 2026.03.20 |
| [PHP] phpMyAdmin 에서 포트설정 (0) | 2026.03.14 |
