이 가이드는 Contact Form 7을 사용하는 새 WordPress 사이트를 “보호 없음” 상태에서 다층 보호 상태로 만드는 과정을 안내합니다. 모든 내용은 2026년 10월 7일에 SilentShield 2.15.14, Contact Form 7 6.2, WordPress 7.1.2로 테스트했습니다. 여기서 설명하는 계층은 고객님의 서버에서 실행됩니다. 선택 사항인 SilentShield API는 WordPress 가이드에서 다룹니다.
설치 직후에는 아무것도 보호되지 않습니다

플러그인을 활성화하면 플러그인은 실행되지만, 켜져 있는 양식 플러그인은 없습니다. 대시보드가 이를 분명히 알려 줍니다. “No form is protected yet”(보호되는 양식이 아직 없습니다)라는 문구와 함께 사이트에서 찾은 양식 플러그인이 표시됩니다. 양식 플러그인을 켜기 전까지는 해당 양식에 CAPTCHA 필드가 표시되지 않고 아무것도 검사되지 않습니다.
아래의 모든 설정은 WordPress 관리자 화면의 SilentShield 메뉴에 있습니다.
1단계: CAPTCHA 방식 선택

SilentShield → Protection Settings를 엽니다. 방식은 세 가지입니다.
- Honeypot(기본값, 보이지 않음). 화면 밖에 함정 필드를 둡니다. 방문자에게는 보이지 않지만, 찾은 모든 필드를 채우는 봇은 여기에 입력합니다. Honeypot은 과제가 아닙니다. 페이지를 읽고 함정을 건드리지 않는 봇은 통과합니다.
- 수학 문제. 방문자가 간단한 계산 문제(덧셈, 뺄셈 또는 곱셈)를 풉니다. 텍스트로 표시되므로 실제 브라우저를 구동하는 봇은 읽을 수 있습니다.
- 이미지 CAPTCHA. 방문자가 왜곡된 문자를 입력합니다. 서버에 PHP GD 라이브러리가 필요하며, 방문자에게 가장 큰 부담을 주는 방식입니다.
전환율이 가장 중요하다면 Honeypot으로 시작하고, 그래도 스팸이 들어오면 수학 문제나 이미지 CAPTCHA로 단계를 높이세요. 템플릿을 고르고, 필요하면 라벨을 수정한 뒤 Save를 클릭합니다.
2단계: 양식 켜기

SilentShield → Forms를 엽니다. 양식 플러그인마다 스위치가 있으며, 옆의 배지는 해당 플러그인이 사이트에서 감지되었는지를 나타냅니다. Contact Form 7을 켜면 배지가 “Disabled”에서 “Fields detected”로 바뀝니다. 이 스위치는 즉시 저장되므로 저장 버튼을 누를 필요가 없습니다.
특정 양식에 별도 설정이 필요하면 연동 항목 아래의 해당 양식을 클릭합니다. 설정은 세 단계(전체, 연동, 개별 양식)로 적용되며, 하위 단계가 상위 단계를 덮어씁니다.
개별 폼 플러그인별 단계별 가이드: Avada Forms, Elementor Forms, WPForms, WooCommerce 결제.
3단계: 탐지 계층 추가

Protection Settings의 아래쪽에서는 각 계층에 별도의 스위치가 있습니다. 새로 설치했을 때의 상태는 다음과 같습니다.
- JavaScript 탐지(켜짐). JavaScript를 실행하지 않은 클라이언트의 제출을 차단합니다. 예를 들어 양식 주소로 직접 전송하는 스크립트가 해당됩니다.
- 브라우저 탐지(켜짐). 요청에 유효한 사용자 에이전트가 포함되어 있는지 확인합니다.
- 타이머 보호(꺼짐). 페이지가 로드된 뒤 최소 시간보다 빨리 도착한 제출을 거부합니다. 기본 최소 시간은 500밀리초입니다.
- 중복 제출 방지(꺼짐). 같은 CAPTCHA 세션이 두 번 이상 제출되는 것을 막습니다.
- Gibberish Detection(켜짐, “Monitor only”). “dQgJlwEhfxaLZSKYLy”처럼 무작위 문자로 이루어진 텍스트를 표시합니다. 모니터 모드에서는 거부했을 내용을 기록만 하고 아무것도 차단하지 않습니다. 한동안 결과를 지켜본 뒤 모드를 “Block”으로 바꾸세요.
활성화된 계층 중 하나라도 문제를 제기하면 해당 제출은 거부됩니다.
4단계: 끈질긴 스팸에는 속도 제한과 콘텐츠 규칙

SilentShield → Advanced Settings를 엽니다. 여기의 항목은 모두 기본적으로 꺼져 있습니다.
- IP 기반 속도 제한. 5분 안에 3번 실패하면 해당 주소가 1시간 동안 차단됩니다(기본값이며 모두 조정할 수 있습니다). 주소는 솔트가 적용된 해시로 저장됩니다.
- 콘텐츠 규칙. 메시지에 포함할 수 있는 링크 수의 상한, BBCode 링크(
[url=…]) 차단, 단어 블랙리스트입니다. 블랙리스트는 WordPress 자체 목록으로, “설정 → 토론”의 “Disallowed Comment Keys”(댓글 금지 키워드)와 같습니다. 어느 쪽에서 수정해도 효과는 같습니다. - IP 블랙리스트. 항상 차단하려는 주소를 한 줄에 하나씩 입력합니다.
5단계: 관리자가 아닌 방문자로 테스트

관리자와 로그인한 사용자는 기본적으로 모든 검사를 건너뜁니다(같은 페이지의 화이트리스트). 따라서 로그인한 상태에서 하는 테스트는 아무것도 증명하지 못합니다. 대신 비공개 브라우징 창에서 양식을 여세요.
- 틀린 CAPTCHA 답으로 제출합니다. 제출이 차단되어야 합니다. Contact Form 7은 응답 상자에 그 이유를 표시하며, 여기서는 “Captcha check”입니다.
- 양식을 새로 고치고 올바른 답으로 제출합니다. 이번에는 통과해야 합니다.
어떤 설정이 어떤 스팸을 막는가
- 브라우저 없이 직접 전송하는 스크립트: JavaScript 탐지와 브라우저 탐지.
- 모든 필드를 채우는 봇: Honeypot.
- 몇 밀리초 만에 양식을 채우고 전송하는 스크립트: 타이머 보호.
- 무작위 문자로 된 채우기 텍스트: Gibberish Detection.
- 링크 스팸: 링크 수 상한, BBCode 차단, 단어 블랙리스트.
- 같은 주소가 계속 반복해서 시도: IP 기반 속도 제한.
한계
- 사람이 직접 입력하는 스팸은 어떤 설정으로도 막을 수 없습니다.
- 실제 브라우저를 구동하는 봇은 클라이언트 측 검사를 통과할 수 있습니다. 콘텐츠 규칙과 Gibberish Detection은 대신 입력된 내용을 살펴봅니다. 이런 경우를 위한 계층이 행동 분석입니다.
- 브라우저에서 JavaScript가 실행되지 않으면 보호된 양식으로의 제출은 거부됩니다.