Technote

보안 입문

DISALLOW_FILE_EDIT 하나로 막히는 공격 경로

관리자 비밀번호가 한 번 새면, 내장 테마 편집기는 웹셸 설치 화면이 됩니다. 상수 한 줄이 그 최단 경로를 지웁니다.

워드프레스 관리자에는 테마 · 플러그인 파일을 브라우저에서 고치는 편집기가 내장돼 있습니다. 편의 기능이지만, 공격자 관점에서 보면 관리자 세션 하나 = PHP 실행 권한이라는 등식을 만들어 주는 기능입니다.

세 번째 칸을 없애면 등식이 끊긴다

차단은 한 줄

define( 'DISALLOW_FILE_EDIT', true );

wp-config.php 에 넣으면 편집기 메뉴가 사라지고, 화면을 직접 호출해도 거부됩니다. 파일 수정은 배포 절차(Git · WP-CLI)로만 이루어져야 하고, 실제로 그렇게 운영하는 사이트라면 이 기능을 잃는 것이 아무 손실이 아닙니다.

한 단계 더: DISALLOW_FILE_MODS

define( 'DISALLOW_FILE_MODS', true );   // 프로덕션 전용

플러그인 · 테마의 설치와 업데이트까지 화면에서 막습니다. 설치가 WP-CLI 로만 가능해지므로, 배포 절차 밖에서 코드가 서버에 들어오는 경로가 사라집니다. 단 자동 보안 패치도 함께 꺼지므로, 업데이트를 정기 절차로 돌리는 운영이 전제입니다 — 스테이징 검증 없이 도입하면 방치로 이어집니다.

이 한 줄이 대체하지 못하는 것

  • 비밀번호 · 2단계 인증 — 세션 유출 자체를 줄이는 층은 따로 필요합니다.
  • 업로드 실행 차단 — 편집기 말고도 PHP 가 서버에 들어오는 길이 있습니다. 업로드 디렉터리의 PHP 실행 차단이 그 문을 닫습니다.
  • 이미 심어진 셸 제거 — 예방 상수는 과거를 지우지 못합니다. 침해가 의심되면 진단이 먼저입니다.

서버 · 애플리케이션 양쪽의 하드닝을 한 번에 정리하는 것이 최적화 지원 사업의 보안 항목입니다. 진단 → 조치 → 재스캔의 순서는 작업 과정에 공개돼 있습니다.

이 주제의 다른 글

노하우 목록으로

보안 실무

리드 데이터는 자산이면서 책임입니다

연락처 목록은 마케팅 자산이지만 동시에 개인정보입니다. 필요한 만큼만 받고, 기간을 정해 두고, 그 기간이 지나면 실제로 지우는 세 가지가 핵심입니다.

마케터 3분 읽기

보안 실무

분석과 개인정보 — 최소 수집과 고지의 실제

배너를 띄우는 것과 동의를 받는 것은 다릅니다. 무엇을 왜 수집하는지 스스로 설명할 수 있어야 하고, 보관 기간은 방치가 아니라 결정이어야 합니다.

마케터 4분 읽기

₩270,000 · 신청하기