Technote

보안 실무

연재 리드를 만들고 잃지 않기 8부 중 5부

캡차 없이 스팸 줄이기 — 전환을 깎지 않는 방법

캡차는 스팸을 줄이지만 진짜 문의도 함께 줄입니다. 사람에게는 보이지 않고 스크립트만 걸리는 장치들을 먼저 써 보는 편이 낫습니다.

폼이 검색에 노출되기 시작하면 스팸이 옵니다. 이때 가장 먼저 떠오르는 해결책이 캡차입니다. 그런데 캡차는 스팸만 막는 장치가 아닙니다 — 진짜 고객에게도 똑같이 작업을 요구합니다.

모바일에서 흐릿한 이미지를 고르다 실패하고 창을 닫는 사람, 접근성 도구를 쓰다 막히는 사람, 그냥 귀찮아서 그만두는 사람이 생깁니다. 그리고 그 손실은 스팸 감소량과 달리 눈에 보이지 않습니다. 그래서 순서가 중요합니다.

스팸은 사람이 아니라 스크립트가 만듭니다

대부분의 폼 스팸은 자동화된 스크립트가 만듭니다. 스크립트는 페이지를 사람처럼 읽지 않습니다. HTML 을 훑어 입력 칸을 찾고, 전부 채우고, 즉시 제출합니다. 사람과 스크립트의 행동 차이가 여기서 생기고, 그 차이가 곧 걸러 내는 재료가 됩니다.

행동의 차이 — 사람에게 부담을 주지 않고도 구분할 수 있는 지점들

전환을 깎지 않는 세 가지

허니팟은 사람 눈에 보이지 않는 입력 칸을 폼에 하나 더 두는 방법입니다. 방문자는 그 칸의 존재를 모르므로 비워 두지만, HTML 을 읽는 스크립트는 성실하게 채웁니다. 그 칸에 값이 있으면 스팸으로 판정합니다. 고객이 하는 일이 하나도 늘지 않는다는 것이 이 방법의 가치입니다.

제출 시간 확인은 폼이 화면에 나타난 시각과 제출된 시각의 간격을 보는 방법입니다. 사람이 읽고 입력하려면 최소한의 시간이 필요한데, 스크립트는 그 시간을 쓰지 않습니다. 임계값은 넉넉하게 잡습니다 — 짧게 잡으면 빠르게 입력하는 사람이 걸립니다.

서버측 검증은 마지막 관문입니다. 브라우저에서 하는 검사는 스크립트가 그냥 건너뛸 수 있으므로, 필수 항목 · 형식 · 길이는 서버에서 다시 확인해야 합니다. 여기서 반복 제출 제한도 함께 겁니다.

적용 순서 — 위에서부터 쓰고, 아래는 정말 필요해질 때만

그래도 캡차를 써야 한다면

위 방법들로도 감당이 안 되는 규모의 스팸이 있습니다. 그때는 캡차를 쓰되 대가를 알고 씁니다.

첫째, 보이지 않는 방식을 우선합니다. 사용자가 아무 작업도 하지 않고 통과하는 형태가 이미 여럿 있습니다. 둘째, 도입 전후로 제출 수를 함께 기록합니다. 스팸이 줄어든 만큼 진짜 문의도 줄었는지 확인해야, 이 선택이 이득인지 판단할 수 있습니다. 셋째, 접근성을 확인합니다 — 화면 낭독기 사용자가 통과할 수 없는 폼은 고객을 배제하는 폼입니다.

그리고 스팸이 늘었다는 사실 자체를 신호로 읽습니다. 폼이 스팸 목록에 올랐다는 뜻이기도 하지만, 사이트 전반의 방어 상태를 한 번 점검할 시점이라는 뜻이기도 합니다. 점검 항목은 보안 아카이브에 정리돼 있고, 사이트 전체의 취약점 진단은 최적화 지원 사업에 포함돼 있습니다.

다음 회차

스팸을 걸러 내면 남는 것은 진짜 리드입니다. 그런데 그 리드는 개인정보이기도 합니다 — 다음 회차는 얼마나 받고, 얼마나 두고, 언제 지울지에 관한 이야기입니다.

이 주제의 다른 글

노하우 목록으로

보안 실무

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

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

마케터 3분 읽기

보안 실무

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

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

마케터 4분 읽기

₩270,000 · 신청하기