
| 플러그인 이름 | 카테고리 설명에서 HTML 허용 |
|---|---|
| 취약점 유형 | 크로스 사이트 스크립팅(XSS) |
| CVE 번호 | CVE-2026-0693 |
| 긴급 | 낮은 |
| CVE 게시 날짜 | 2026-02-13 |
| 소스 URL | CVE-2026-0693 |
긴급: “카테고리 설명에서 HTML 허용”의 저장된 XSS (<= 1.2.4) — 워드프레스 사이트 소유자가 지금 해야 할 일
요약: 저장된 교차 사이트 스크립팅(XSS) 취약점(CVE-2026-0693)이 워드프레스 플러그인 “카테고리 설명에서 HTML 허용”(버전 <= 1.2.4)에서 공개되었습니다. 관리자 수준의 권한을 가진 인증된 사용자는 카테고리 설명에 악성 HTML/JavaScript를 주입할 수 있으며, 이는 나중에 방문자 또는 다른 관리자 브라우저에서 실행될 수 있습니다. 현재 취약한 버전에 대한 공식 패치는 없습니다. 이 게시물은 WP‑Firewall, 전담 워드프레스 보안 제공자의 관점에서 기술 세부사항, 위협 시나리오, 즉각적인 완화 조치, 탐지 및 정리 단계, 장기적인 강화 방법을 설명합니다.
주의: 이 플러그인을 실행하고 영향을 받는 버전이 설치되어 있다면, 이를 높은 우선 순위의 사이트 보안 작업으로 간주하십시오 — 취약점이 관리자 권한을 요구하더라도, 실제로는 영향이 클 수 있습니다.
취약점이란 무엇입니까?
- 유형: 저장된 교차 사이트 스크립팅(XSS).
- 영향을 받는 구성 요소: 워드프레스 플러그인 “카테고리 설명에서 HTML 허용” — 버전 <= 1.2.4.
- CVE: CVE-2026-0693.
- CVSS: 5.9 (중간), 벡터: CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:L.
- 근본 원인: 이 플러그인은 관리자가 적절한 정화 또는 출력 인코딩 없이 분류 설명에 필터링되지 않은 HTML을 저장할 수 있도록 허용합니다. 카테고리 설명에 저장된 악성 JavaScript는 해당 설명을 렌더링하는 페이지의 맥락에서 실행될 수 있으며(프론트 엔드 또는 특정 관리자 보기), 쿠키 도용, 권한 남용 또는 피해자의 브라우저 세션으로 수행된 작업을 가능하게 합니다.
이것이 중요한 이유: 관리자는 신뢰할 수 있는 계정이며, 특권 사용자가 작업을 수행하도록 유도할 수 있는 공격자(또는 스스로 손상된 관리자로 행동할 수 있는 공격자)는 다른 관리자 사용자 또는 사이트 방문자를 희생시키는 악성 스크립트를 지속할 수 있습니다. 관리자 전용 작업이 취약점을 유발하는 데 필요하더라도, 결과는 사이트 변조 및 리디렉션 캠페인에서 전체 사이트 인수에 이르기까지 다양합니다.
공격자가 이를 어떻게 악용할 수 있는지
전형적인 악용 흐름:
- 공격자는 관리자 계정을 얻거나 손상시키거나(피싱, 재사용된 비밀번호, 내부자 등), 관리자가 페이로드가 저장되는 작업을 수행하도록 속입니다(아래 사용자 상호작용 주석 참조).
- 플러그인 인터페이스(카테고리 편집 화면) 또는 분류 설명을 업데이트하는 다른 진입점을 사용하여, 공격자는 카테고리 설명 필드에 페이로드를 주입합니다 — 예를 들어,
<script>…</script>또는 onload/onerror 핸들러가 있는 SVG, 또는 onmouseover, srcset 또는 javascript: URI와 같은 속성 기반 페이로드. - 페이로드는 데이터베이스에 저장됩니다 (
term_taxonomy.description). - 관리자가 카테고리 페이지(또는 해당 설명을 렌더링하는 모든 관리자 페이지)를 볼 때, 스크립트는 사이트의 출처 내에서 그들의 브라우저에서 실행됩니다.
- 악성 스크립트는:
- 쿠키/로컬 스토리지를 수집하여 원격 서버로 전송할 수 있습니다.
- 피해자의 인증된 브라우저 세션을 사용하여 WordPress REST 엔드포인트 또는 AJAX 엔드포인트를 호출할 수 있습니다(대상 요청에 nonce 확인 또는 적절한 권한 확인이 없는 경우 사용자 생성, 플러그인 설치 또는 옵션 수정 가능).
- 추가 악성 콘텐츠(광고, 리디렉션, 자격 증명 수집 양식)를 주입할 수 있습니다.
- 관리 페이지를 수정하거나 초기 스크립트 제거 이후에도 지속되는 백도어를 주입할 수 있습니다.
중요한 뉘앙스: 많은 현대 WordPress 설치는 auth 쿠키를 HttpOnly로 설정하여 JS에 의한 직접 쿠키 접근을 방지합니다. 그러나 JavaScript는 동일 출처 및 nonce 보호가 없거나 다른 벡터를 통해 도난당할 수 있는 경우 인증된 요청(fetch/XHR)을 수행할 수 있습니다. 공격자는 XSS를 다른 약한 제어와 연결하여 권한 상승 또는 전체 손상을 달성할 수 있습니다.
사용자 상호작용: 이 익스플로잇은 일부 문서에서 사용자 상호작용이 필요하다고 분류됩니다 — 일반적으로 특권 사용자가 특정 페이지를 방문하거나 실행을 트리거하는 조작된 링크를 클릭해야 할 수 있습니다. 그럼에도 불구하고 저장된 XSS는 지속적이며 페이지가 로드될 때 자동으로 트리거될 수 있습니다(방문자가 추가 클릭을 할 필요 없음).
즉각적이고 우선적인 조치(다음 한 시간 이내)
- 지금 플러그인을 비활성화하세요.
- 사이트에 접근하여(wp-admin → 플러그인) “카테고리 설명에 HTML 허용” 플러그인을 즉시 비활성화하세요.
- 관리 패널에 접근할 수 없는 경우, FTP 또는 호스팅 파일 관리자를 통해 플러그인 폴더 이름을 변경하여 비활성화하세요:
wp-content/plugins/allow-html-in-category-descriptions→ 추가-비활성화됨.
- 사이트를 유지 관리 모드로 전환하세요(적절한 경우).
- 활성 악용이 의심되는 경우(가시적인 리디렉션, 변조, 스팸 콘텐츠), 조사하는 동안 공용 접근을 일시적으로 차단하는 것을 고려하세요.
- 관리 자격 증명을 감사하고 교체하세요.
- 모든 관리자 계정에 대해 비밀번호 재설정을 강제하세요.
- 의심스러운 관리자 활동이 있는 경우, 세션 및 토큰을 취소하세요(사용자 → 모든 사용자 → 각 관리자에 대해 “모든 곳에서 로그아웃” 또는 플러그인을 사용하여 세션 만료).
- 강력한 비밀번호를 시행하고 관리자 계정에 대해 이중 인증(2FA)을 활성화하세요.
- XSS 페이로드를 저장하려는 새로운 요청 차단
- 웹 애플리케이션 방화벽(WAF)을 실행 중이거나 호스트 또는 CDN(또는 WP‑Firewall 규칙을 통해)에서 요청 필터링을 신속하게 배포할 수 있는 경우, 스크립트와 유사한 패턴을 포함하는 카테고리 설명을 저장하려는 POST 요청을 차단하십시오. 이 게시물의 후반부에서 제안된 WAF 규칙을 참조하십시오.
- 사이트 백업(파일 + DB)
- 사이트를 수정하거나 정리하기 전에 전체 백업을 생성하십시오. 바람직하게는 데이터베이스를 내보내고 wp-content 및 모든 업로드 또는 사용자 정의 파일의 스냅샷을 다운로드하십시오.
- 즉시 침해 지표를 스캔하십시오.
- 예상치 못한 사용자, 파일, 예약된 작업(wp_cron 작업), 최근에 변경된 옵션 값 및 게시물, 페이지 및 분류 설명에 주입된 콘텐츠를 찾으십시오.
조사: 악성 카테고리 설명을 찾아 피해 범위를 파악하십시오.
카테고리 설명은 데이터베이스에 저장됩니다. 의심스러운 콘텐츠를 신속하게 찾으려면 스크립트와 유사한 콘텐츠에 대한 검색을 실행하십시오.
WP‑CLI 사용(쉘 접근이 가능한 경우 권장):
- “<script”를 포함하는 검색어 설명:
wp db query "SELECT term_taxonomy_id, term_id, description FROM wp_term_taxonomy WHERE description LIKE '%<script%';"
- 일반적인 XSS 벡터 검색 (onerror, onload, javascript:, data:, svg, iframe, <img>):
wp db query "SELECT term_taxonomy_id, term_id, description FROM wp_term_taxonomy WHERE description REGEXP '(script|onerror|onload|javascript:|data:|iframe|svg|img)';"
WP‑CLI가 없는 경우 phpMyAdmin 또는 호스팅 데이터베이스 도구에서 동등한 SQL을 실행하십시오.
또한 확인하십시오:
- 게시물 및 페이지: 검색
게시물_컨텐츠유사한 패턴에 대해 (SELECT ID, post_title FROM wp_posts WHERE post_content REGEXP '(<script|onerror|onload|javascript:)'). - 위젯 및 테마 옵션:
wp_옵션테이블 내용에도 주입된 HTML이 포함될 수 있습니다. - 익숙하지 않은 코드에 대한 플러그인/테마 파일.
의심스러운 설명을 발견하면 대량 수정을 하기 전에 안전한 장소(포렌식)로 내보내십시오.
감염된 설명을 안전하게 정리하기
옵션 A — 수동 제거(항목이 적을 경우 권장):
- wp-admin → 게시물/용어 편집기를 사용하여 설명을 수동으로 편집하여 페이로드를 제거하십시오.
- 카테고리의 경우: WP Admin → 게시물 → 카테고리 → 각 의심스러운 카테고리 설명을 편집하십시오.
옵션 B — 데이터베이스 정리(대규모 또는 자동 정리의 경우):
- SQL을 사용하여 위험한 태그를 교체하십시오(먼저 백업에서 테스트):
-- 용어 설명에서 블록 제거;
- onload/onerror와 같은 이벤트 핸들러 속성을 제거하십시오(복잡할 수 있으므로 마크업이 깨지지 않도록 PHP 기반의 세정기를 고려하십시오).
옵션 C — WordPress 함수를 사용하여 PHP 스크립트를 통해 세정하기(더 안전함):
일회성 PHP 스크립트를 생성하고 WP-CLI eval-file 또는 관리자 후크를 통해 실행하십시오:
<?php
다음을 통해 실행하십시오:
wp eval-file sanitize-term-descriptions.php
참고:
- 엄격하게 제한된 허용 태그 세트를 사용한 wp_kses는 속성을 수동으로 정규 표현식으로 제거하려고 시도하는 것보다 더 안전합니다.
- 변경 사항을 스테이징 사이트 또는 백업에서 먼저 테스트하십시오.
제안된 방어적 WAF 규칙 및 단기 가상 패치
WAF(관리 호스트, CDN 또는 WP‑Firewall)를 사용하는 경우 의심스러운 페이로드 저장 시도를 차단하거나 알려진 의심스러운 콘텐츠의 렌더링을 차단하는 규칙을 추가하십시오.
간단한 탐지 휴리스틱:
- 다음에 대한 POST 요청 차단
wp-admin/term.php1. 용어 설명을 저장하는 데 사용되는 REST 엔드포인트<script,오류 발생=,온로드=,자바스크립트:,데이터:텍스트/html,svg/onload,iframe, 또는 의심스러운src속성을 사용하여데이터:/자바스크립트:. - 포함된 요청 차단
<svg2. 이벤트 핸들러와 함께, 또는style="background:url(javascript:3. 스타일 주입.
4. 예제 ModSecurity 스타일 규칙 (의사 코드 — 환경에 맞게 조정):
5. 또는 이벤트 핸들러가 포함된 카테고리 설명을 저장하려는 시도를 차단합니다."
SecRule REQUEST_METHOD "POST" "chain,phase:2,deny,log,msg:'용어 설명 XSS 시도 차단'"
SecRule REQUEST_URI "@contains /wp-admin/term.php" "chain'
SecRule ARGS_POST:description "@rx (]*on)" "t:none,t:lowercase"
- 6. REST 엔드포인트에 대해 (플러그인이 REST를 노출하거나 admin-ajax를 사용하는 경우):
설명7. REST 요청에서 의심스러운 페이로드를 차단합니다. - SecRule REQUEST_BODY "@rx (<script|onerror|onload|javascript:|data:|iframe|svg)" "deny,log,msg:'REST XSS 페이로드 차단'".
중요한: 8. WP‑Firewall 전용 접근 방식:.
9. 매개변수를 검사하여 XSS 패턴과 일치하는 경우 차단하는 규칙을 추가합니다.
- 10. 허용되지 않는 태그/속성의 저장을 정리하거나 차단하기 위해 요청 본문 검사를 활성화하고 사용자 정의 규칙을 추가합니다.
- 11. WAF 규칙은 임시 방편입니다. 플러그인을 제거하거나 사이트를 패치하는 동안 위험을 줄이지만, 취약한 코드를 제거하는 것을 대체하지는 않습니다.
wp_옵션12. 탐지: 정리 후 확인할 사항. - 13. 예상치 못한 관리자 사용자 또는 권한이 상승된 새 계정.
- 14. 알 수 없는 코드를 실행하는 예약된 작업 (cron 항목 및 wp_cron 확인).
- 15. 설치되거나 변경된 예상치 못한 플러그인 또는 테마 (파일 체크섬을 저장소 버전과 비교).
- 16. 서버에서 의심스러운 외부 연결 및 DNS 조회.
유용한 WP‑CLI 명령:
- 사용자 및 역할 목록:
wp 사용자 목록 --역할=관리자
- 최근 크론 이벤트 표시:
wp 크론 이벤트 목록 --due-now
- 변경된 플러그인/테마 파일 확인(깨끗한 참조가 있는 경우):
wp 플러그인 verify-checksums plugin-slug
사고 대응 및 복구 체크리스트
- 악용이 의심되는 경우 사이트를 격리(유지 관리 모드 또는 임시 차단)합니다.
- 전체 백업(파일 + DB)을 수행하고 포렌식 검토를 위해 복사본을 보존합니다.
- 취약한 플러그인을 즉시 비활성화합니다.
- 데이터베이스 항목 정리(용어 설명, 게시물, 옵션).
- 모든 관리자 비밀번호와 API 키를 변경합니다. 손상된 토큰은 취소하고 재발급합니다.
- 모든 권한 있는 계정에 대해 2FA를 활성화합니다. 관리자 계정을 제한합니다.
- 모든 백도어(예상치 못한 PHP 파일, base64/난독화된 코드)를 검토하고 제거합니다.
- 변조가 발견된 경우 신뢰할 수 있는 출처에서 WordPress 코어, 테마 및 플러그인을 재설치합니다.
- 사이트 무결성을 자신 있게 복원할 수 없는 경우 알려진 좋은 백업에서 복원합니다.
- 수정 후 일정 기간 동안 로그 및 사이트 동작을 면밀히 모니터링합니다.
이러한 단계를 직접 수행하는 것이 불편한 경우 신뢰할 수 있는 WordPress 보안 전문가 또는 서비스를 이용하십시오.
장기적인 완화 및 강화
- 최소 권한 원칙: 관리자 역할을 드물게 부여합니다. 가능할 경우 일상적인 콘텐츠 편집을 위해 편집자 또는 사용자 정의 역할을 사용합니다.
- 신뢰할 수 없는 HTML 입력 제한: 권한 있는 사용자로부터 임의의 HTML을 허용하는 플러그인을 피합니다. HTML이 필요한 경우 wp_kses를 사용하여 엄격한 정화를 시행합니다.
- 플러그인과 테마를 최소한으로 유지하고 신뢰할 수 있는 출처에서만 설치합니다. 설치된 플러그인을 정기적으로 감사하고 사용하지 않는 플러그인은 제거합니다.
- 버전 관리 및 파일 무결성 모니터링을 사용하여 테마 및 플러그인 파일에 대한 무단 변경을 감지합니다.
- 안전한 인증 관행 사용: 2FA, 강력한 비밀번호, 비밀번호 관리자 및 계정 사용 모니터링.
- REST API 및 AJAX 엔드포인트 강화: 서버 측 핸들러에서 nonce 및 권한 확인을 보장합니다.
- WAF 보호 및 지속적인 악성 코드 스캔을 구현하십시오 — 이상적으로는 POST 요청에서 주입된 페이로드를 잡기 위해 요청 본문 검사를 포함합니다.
- 사용 중인 플러그인에 대한 취약점 권고를 모니터링하십시오; 신뢰할 수 있는 보안 메일링 리스트 또는 서비스 알림에 가입하십시오.
테마 또는 mu-plugin을 위한 PHP 강화 샘플 코드
WordPress 애플리케이션 수준에서 용어 설명에 HTML 저장을 방지하려면 (플러그인을 즉시 제거할 수 없는 경우의 임시 강화), 용어 생성/업데이트 시 안전하지 않은 태그를 제거할 수 있습니다:
mu-plugin (반드시 사용해야 하는 플러그인)을 생성하십시오. wp-content/mu-plugins/sanitize-term-descriptions.php:
<?php
/*
Plugin Name: Sanitize Term Descriptions - emergency
Description: Strip dangerous HTML from term descriptions as an emergency stopgap.
Author: WP-Firewall Security Team
*/
add_action('created_term', 'wf_sanitize_term_description', 10, 3);
add_action('edited_term', 'wf_sanitize_term_description', 10, 3);
function wf_sanitize_term_description($term_id, $tt_id = 0, $taxonomy = '') {
$term = get_term($term_id, $taxonomy);
if (!$term) {
return;
}
// Allow only minimal HTML
$allowed = array(
'a' => array('href' => true, 'title' => true, 'rel' => true, 'target' => true),
'br' => array(),
'p' => array(),
'b' => array(),
'strong' => array(),
'i' => array(),
'em' => array(),
);
$clean = wp_kses($term->description, $allowed);
if ($clean !== $term->description) {
wp_update_term($term_id, $taxonomy, array('description' => $clean));
}
}
?>
이는 용어가 생성되거나 편집될 때 설명을 사전적으로 정리합니다. 이는 긴급 조치입니다 — 플러그인이 리치 HTML 편집을 허용하는 경우 장기적으로 의존하지 마십시오.
WP‑Firewall이 도움이 되는 방법 (간략 개요)
WordPress 보안 제공업체로서, WP‑Firewall은 관리되는 WAF 규칙, 악성 코드 스캔 및 가상 패치를 제공하여 이 저장된 XSS 패턴(분류 편집, REST 또는 관리자 POST를 통해 저장된 페이로드)을 악용하려는 시도를 감지하고 차단할 수 있습니다. 우리의 서비스는:
- 분류 설명에 알려진 XSS 벡터를 저장하려는 POST 요청을 감지할 수 있습니다.
- 플러그인 공급자가 패치를 릴리스하기 전에 즉시 악용을 중단하기 위해 플러그인의 동작에 맞춘 가상 패치(WAF 서명)를 적용합니다.
- 의심스러운 분류 설명, 악성 파일 및 백도어를 찾기 위해 자동화된 사이트 스캔을 실행합니다.
- 수정 제안 및 단계별 정리 지침을 제공합니다.
이미 WAF가 설치되어 있는 경우, POST 본문 및 REST/AJAX 페이로드를 검사하는지 확인하십시오 — 많은 기본 설정은 그렇지 않습니다.
로그에서 모니터링할 예제 감지 서명
- 포함된 요청 본문
<script또는자바스크립트:와 결합하여wp-admin/term.php,나머지엔드포인트 또는admin-ajax.php. - 포함된 관리자 POSTs
설명의심스러운 속성을 가진 (오류 발생=,온로드=,데이터:). - 분류 페이지에 대한 요청이 갑자기 증가하여 리디렉션 또는 알 수 없는 도메인으로의 외부 호출이 발생합니다.
- 비정상적인 시간이나 드문 IP 주소에서 용어가 생성되거나 수정됩니다.
실제 영향 시나리오
- 시나리오 A: 공격자가 카테고리 설명에 스크립트를 주입하여 피해자 관리자의 브라우저를 사용하여 관리 AJAX 엔드포인트를 호출함으로써 새로운 관리자 사용자를 생성합니다. 결과: 전체 사이트 장악.
- 시나리오 B: 스크립트가 외부 악성 JS를 로드하고 방문자를 애드웨어 또는 피싱 랜딩 페이지로 리디렉션하여 사이트 평판과 SEO에 해를 끼칩니다.
- 시나리오 C: 스크립트가 양식 입력 또는 세션 정보를 수집하고 공격자가 제어하는 도메인으로 유출하여 이후 표적 공격을 가능하게 합니다.
초기 익스플로잇 벡터가 관리자 작업을 요구하더라도 이는 현실적인 결과입니다 — 공격자는 사회 공학에 능숙하고 도난당한 자격 증명을 재사용합니다.
예방 개발 조언 (플러그인/테마 저자 및 에이전시를 위한)
- 사용자 입력을 절대 신뢰하지 마십시오 — 관리자에서조차도. 항상 상황에 맞는 이스케이프(esc_html, esc_attr, wp_kses_post와 함께 엄격한 허용 목록)를 사용하여 출력을 정화하십시오.
- 편집 가능한 HTML 필드의 경우, 정화되고 검증된 HTML만 유지하고 안전한 변형을 저장하십시오(또는 저장 시 정화하는 WYSIWYG를 사용하십시오).
- 사이트 상태를 수정하는 모든 서버 측 엔드포인트(관리 AJAX 핸들러, REST 엔드포인트)에 대해 권한 및 nonce 검사를 구현하십시오.
- CI에서 XSS 벡터 및 정화/이스케이프 흐름에 대한 자동화된 단위/통합 테스트를 추가하십시오.
- 책임 있는 공개 채널과 업데이트 정책을 유지하여 사용자가 적시에 수정 사항을 받을 수 있도록 하십시오.
새 제목: 지금 사이트를 안전하게 보호하세요 — WP‑Firewall 무료 플랜으로 시작하세요.
이 문제를 조사하고 수정하는 동안 빠르고 실용적인 보호 계층을 원하신다면 WP‑Firewall의 기본(무료) 플랜을 고려해 보십시오. 필수 관리 방화벽 규칙, WAF, 악성 코드 스캔 및 OWASP Top 10 위험에 대한 완화가 포함되어 있습니다 — 공격 표면을 극적으로 줄이고 일반적인 XSS 악용 시도를 즉시 차단하는 데 필요한 모든 것입니다. 무료 플랜을 탐색하고 가입하세요:
https://my.wp-firewall.com/buy/wp-firewall-free-plan/
계획 하이라이트:
- 기본(무료): 관리형 방화벽, 무제한 대역폭, WAF, 악성 코드 스캐너, OWASP Top 10 완화.
- 표준($50/년): 기본의 모든 것 + 자동 악성 코드 제거 및 IP 블랙리스트/화이트리스트(20 IP).
- 프로($299/년): 월간 보고서, 자동 가상 패치 추가, 전담 계정 관리자 및 관리 보안 서비스와 같은 프리미엄 추가 기능이 포함됩니다.
빠른 요약 및 최종 체크리스트
- “카테고리 설명에 HTML 허용” (<= 1.2.4)을 실행하는 경우: 플러그인을 즉시 비활성화하십시오.
- 사이트 백업(파일 + DB) 및 포렌식 복사본을 만드십시오.
- 용어 설명을 스캔하고 정리합니다 (WP‑CLI SQL 쿼리 또는 wp_kses PHP 스크립트).
- 관리자 비밀번호를 변경하고 2FA를 활성화합니다. 의심스러운 경우 세션과 API 토큰을 취소합니다.
- 스크립트와 유사한 페이로드를 저장하려는 POST를 차단하기 위해 WAF 규칙을 배포합니다 (가상 패치).
- 추가 손상이 있는지 검사합니다 (새 사용자, 새 파일, 변경된 옵션).
- 변조가 광범위한 경우 알려진 깨끗한 백업에서 재구축하거나 복원합니다.
- 플러그인을 더 안전한 대안으로 교체하거나 제어된, 정리된 HTML만 사용합니다.
분류, WAF 규칙 생성, 신속한 가상 패치 또는 상세한 수정 계획에 대한 직접 지원이 필요하시면, WP‑Firewall의 기본 계획이 위의 정리 단계를 수행하는 동안 즉각적이고 관리되는 보호를 제공합니다. 여기에서 무료 계획을 시작하세요: https://my.wp-firewall.com/buy/wp-firewall-free-plan/
안전을 유지하고 HTML을 수용하는 분류 필드를 고위험 입력으로 취급하세요 — 정리 및 엄격한 출력 이스케이프가 최고의 방어입니다.
