법정 표시 누락은 화면(주로 푸터)과 처리방침 연락처 블록, 광고성 메일 본문에 법이 "사람 눈에 보이게" 적으라고 정한 항목이 빠진 상태다.
코드 취약점이 아니라 화면 표기 문제라서 배포 과정에서 아무도 점검하지 않는다. 반대로 페이지 텍스트만 읽어도 확인되므로 민원이 들어오면 먼저 걸린다.
이 글은 자주 발생하는 실수 패턴, 표준 구현 코드, 30초 자가진단, 24시간 패치 순서를 정리했다.
한눈에 보는 핵심
Q. 구독형 서비스도 푸터에 사업자정보를 써야 하나요? A. 전자상거래법 제10조 제1항은 사이버몰 운영자에게 상호·대표자 성명, 주소, 연락처, 사업자등록번호, 이용약관 표시를 요구하고 방법은 총리령에 위임합니다. 온라인으로 재화·용역을 거래하면 쇼핑몰이 아니어도 적용될 수 있으니 확인하세요. Q. 통신판매업 신고를 안 했으면 신고번호는 비워도 되나요? A. 제13조 제1항은 통신판매업자가 청약을 받을 목적의 표시·광고에 제12조의 신고번호와 신고 기관 이름을 포함하라고 정합니다. 푸터를 직접 명령하진 않는 표시·광고 규정이지만 실무에선 푸터에 함께 적습니다. 면제 기준은 공정위 고시가 정합니다. Q. 직원 없는 회사도 보호책임자를 지정해야 하나요? A. 제31조 제1항 단서는 대통령령 기준에 해당하면 지정을 생략할 수 있고, 제2항은 그 경우 대표자가 보호책임자가 됩니다. 화면 표기의 근거는 처리방침 공개 의무(제30조)입니다. 이 글은 화면 표기를, 방침 내부 6대 항목은 '개인정보처리방침 6대 필수 섹션 자동 점검'에서 다룹니다.자주 발생하는 실수 패턴
| # | 패턴 | 위험도 |
|---|---|---|
| 1 | 푸터에 회사 이름만 있고 대표자·사업자등록번호·주소·연락처 없음 | 높음 |
| 2 | 통신판매업 신고번호·신고기관 미표시 — 면제 확인 기록 없음 | 높음 |
| 3 | 처리방침에 개인정보 보호 책임자 성명·직책·연락처가 없음 | 치명 |
| 4 | 수신 기능을 운영하면서 발송 메시지에 수신거부 방법을 안 밝힘 | 높음 |
| 5 | 표기를 이미지·SVG로 박음 — 보이지만 자동 점검·스크린리더가 못 읽음 | 중간 |
표준 구현 코드
<!-- 푸터 (표시는 텍스트로) -->
<footer>
<p>센트릭스(Sentrix) | 대표자 이OO | 사업자등록번호 673-54-01057<br>
통신판매업신고번호 제2026-용인수지-1588호 | 경기 용인시 수지구 OO로 00<br>[email protected]</p>
<a href="/terms/">이용약관</a> <a href="/security/privacy/">개인정보처리방침</a>
</footer>
<!-- 처리방침 -->
<h2>개인정보 보호 책임자</h2>
<p>성명 OOO / 직책 대표 / [email protected]</p>
<!-- 광고성 메일 하단 -->
<p>광고성 정보 / 발송자 센트릭스 [email protected]<br>
<a href="/email-preferences/">수신거부·수신동의 철회</a></p>
핵심은 "동작하는 코드"와 "안전한 코드"가 다르다는 점이다.
AI 코딩 도구는 기능 충족 코드를 우선 출력하므로 보안 분기는 별도로 강제해야 한다.
미들웨어·정책·CI 게이트로 모든 경로에 일괄 적용하는 것이 표준이다.
30초 자가진단
# 자동 점검은 표기 키워드 유무까지만 본다. 대표자·주소·연락처·신고기관이 제대로 적혔는지,
# 초기화면(푸터)에 있는지는 육안 확인이 필요하다.
SITE=https://example.com
POLICY=https://example.com/privacy/ # 실제 방침 경로로 바꿔라. MISSING이면 이 URL부터 의심
TEXT=$( { curl -sL --max-time 15 "$SITE"; curl -sL --max-time 15 "$POLICY"; } | sed 's/<[^>]*>/ /g' )
chk(){ printf '%s: ' "$1"; printf '%s' "$TEXT"|grep -qiE -- "$2" && echo OK||echo MISSING; }
chk 사업자등록번호 '사업자 ?등록번호'
chk 통신판매업 '통신판매업'
chk 보호책임자 '개인정보 ?보호 ?책임자|CPO'
chk 수신거부 '수신거부|수신 거부|수신동의 철회|unsubscribe'
printf '%s' "$TEXT" | grep -oiE '뉴스레터|newsletter|광고성 정보' | sort -u # 신호가 있는데 수신거부가 MISSING이면 제50조 제4항 확인 필요
위 시그널이 발견되면 결함이다. 국가법령정보센터 — 전자상거래법 전문를 함께 참조하라.
24시간 패치 절차
| 순위 | 조치 |
|---|---|
| 1 | 상호·대표자·사업자등록번호·주소·연락처를 base 레이아웃 푸터 한 곳에 텍스트로 추가 — 전 페이지 일괄 |
| 2 | 통신판매업 신고 대상 여부 확인. 24시간 안에 할 것은 대상 확인과 신고 접수·표기 자리 준비까지다(번호 발급은 관청 처리 기간이 걸려 발급 즉시 표기). 자동 점검은 표기 문구 유무만 보므로 판단 근거는 사내에 남긴다 |
| 3 | 처리방침에 개인정보 보호 책임자 성명·직책·연락처 블록 추가 — 지정을 생략했다면 대표자를 기재 |
| 4 | 수신 기능이 있으면 발송 메일에 발송자 명칭·연락처와 수신거부·철회 방법을 밝히고 철회 페이지로 연결 |
| 5 | 이미지가 아닌 텍스트로 두고 배포 후 육안 확인. 개인정보·보안 점검은 SENTRIX, 신고 대상 여부는 관할 기관 확인 |
지금 해야 할 것
실무자: CodeScan 무료 스캔으로 30초 점검 후 우선순위대로 패치.
CISO·임원: 조직 전체 점검·규제 대응은 SENTRIX 30분 1:1 상담으로.
결함은 발견 즉시, 늦어도 24시간 안에 패치하는 것이 표준이다.