개인프로젝트이용약관개인정보처리방침정보통신망법Next.js

무수익 개인 프로젝트도 이용약관이 필요할까 — 노가리에 약관·개인정보처리방침을 넣은 이유

2026년 7월 17일5 분 읽기

"서버를 외국에 있는 것처럼 위장해야 하나?"

노가리(익명 커뮤니티 프로젝트)를 슬슬 홍보해보려던 참이었다. 그런데 문득 겁이 났다. 실명·직함이 그대로 노출되는 정치인 방도 있고, 욕은 아니어도 날 선 뒷담화가 오가는 곳이다 보니 "이거 신고나 소송 들어오면 어떡하지" 하는 생각이 들었다. 그래서 진지하게 이런 질문을 해봤다.

"노가리 홍보하려고 하는데, 서버가 외국에 있는 것처럼 위장해야 할까?"

돌아온 답은 명확했다. 위장은 법적 리스크를 줄여주지 않는다. 오히려 문제가 생겼을 때 "고의로 은폐하려 했다"는 정황으로 더 불리하게 작용할 수 있다는 것이다. 진짜 방어선은 숨는 게 아니라 신고 → 임시조치로 이어지는 프로세스와 약관을 제대로 갖추는 것이었다.

이 글은 그 결론에 동의하고 실제로 /terms, /privacy 페이지를 만든 과정을 정리한 것이다. "나는 그냥 취미로 만든 무료 서비스인데 이런 것까지 필요한가?"라는 생각이 든다면 아마 나와 같은 고민을 하고 있을 것이다.

사업자등록 의무와 개인정보 고지 의무는 별개다

제일 먼저 헷갈렸던 지점이 이거였다. "나는 광고도 없고 결제도 없는 무수익 개인 프로젝트인데, 사업자등록증도 없이 이용약관을 걸어도 되나?"

결론부터 말하면 두 가지는 완전히 다른 층위의 의무다.

구분근거 법적용 조건
통신판매업 신고, 사업자등록전자상거래법, 부가가치세법영리 목적의 계속·반복적 사업 활동에만 적용
게시물 관리 책임 (임시조치)정보통신망법 44조의2정보통신서비스 제공자면 무조건 적용, 영리 여부 무관
개인정보 처리 고지개인정보보호법개인정보를 처리하는 순간부터 적용, 영리 여부 무관

즉 나는 사업자등록이나 통신판매업 신고 대상은 아니지만, 게시물을 다루고 이용자의 기기 정보(익명 해시값)를 저장하는 순간부터 정보통신망법과 개인정보보호법상 의무는 그대로 적용된다. "무료로 취미 삼아 운영한다"는 사실이 이 의무를 면제해주지 않는다.

그래서 페이지 상단에 이 판단 근거를 주석으로 남겨뒀다.

// 노가리는 광고·유료 기능이 없는 무수익 개인 프로젝트라, 통신판매업 신고나
// 사업자등록 대상이 아니다(전자상거래법·부가가치세법상 의무는 영리 목적의
// 계속·반복적 사업 활동에 붙는다). 다만 정보통신망법상 게시물 관리 책임과
// 개인정보 처리 의무는 사업자 등록 여부와 무관하게 적용되므로, 운영자를
// "개인"으로 정직하게 표기하고 그 의무만 충실히 정리한다.

거짓말할 필요가 없다는 게 오히려 마음이 편했다. "저는 사업자가 아니라 개인 운영자입니다"라고 정직하게 써도 법적 의무는 그대로 이행하면 된다.

Step 1: 이용약관에 정보통신망법 44조의2(임시조치) 넣기

핵심은 "누군가 명예훼손이나 권리침해를 신고하면 어떻게 되는가"를 명시하는 것이었다. 정보통신망법 44조의2는 이런 상황에서 서비스 제공자가 취해야 할 절차를 규정한다 — 요청을 받으면 즉시 해당 게시물에 대해 임시조치(최대 30일간 접근 차단)를 할 수 있다는 조항이다.

<em>정보통신망 이용촉진 및 정보보호 등에 관한 법률 제44조의2</em>에
따라 요청을 받은 즉시 해당 게시물에 대해 임시조치(최대 30일간 접근
차단)를 할 수 있으며, 권리침해 여부 판단이 곤란한 경우에는 30일 내
범위에서 조치를 유지할 수 있습니다. 삭제 요청은 아래 연락처로
접수합니다.
<p className="mt-2 rounded-lg bg-muted px-3 py-2 text-sm text-muted-foreground">
  문의/신고: nogari.nara@protonmail.com
</p>

그리고 운영자의 책임 범위도 함께 못 박았다. 게시물 내용에 대한 1차 책임은 작성한 이용자에게 있고, 운영자는 "신고 접수 및 임시조치 절차를 성실히 이행"하는 역할이라는 걸 명시했다.

운영자는 이용자가 게시한 정보·내용의 신뢰성, 정확성에 대해 사전
편집·검수할 책임을 지지 않으며, 게시물의 내용에 대한 1차적 책임은
이를 작성한 이용자 본인에게 있습니다. 다만 운영자는 신고 접수 및
임시조치 등 관련 법령이 정한 절차를 성실히 이행합니다.

이 조항이 실제로 의미가 있으려면 "신고를 받으면 조치한다"는 게 문서상의 선언이 아니라 실제로 동작하는 기능이어야 한다. 노가리에는 이미 신고 → AI 1차 분류 → 사람이 최종 검토하는 파이프라인이 있었고(이 부분은 이전에 만들어둔 신고 시스템 글에서 다뤘다), 이번에 관리자 신고 페이지에 필터·검색까지 붙여서 실제로 신고가 묻히지 않고 처리되게 다듬었다. 문서와 코드가 서로 어긋나지 않게 맞춰두는 게 중요했다.

Step 2: 개인정보처리방침은 "실제로 뭘 저장하는지"부터 정직하게

노가리는 회원가입이 없다. 이름도, 이메일도, 전화번호도 받지 않는다. 그런데 그렇다고 개인정보처리방침이 필요 없는 건 아니다 — 부정 이용 방지를 위해 기기 단위로 되돌릴 수 없는 해시값(HMAC)을 저장하고 있고, 쿠키로 익명 세션을 유지하고 있기 때문이다. 이것도 개인정보보호법상 "개인정보의 처리"에 해당할 수 있다.

그래서 방침 최상단에도 실제 구현을 그대로 반영한다는 원칙을 적어뒀다.

// 회원가입이 없는 완전 익명 서비스라 이름·이메일 등은 아예 수집하지 않는다.
// 실제로 저장되는 건 (1) 부정이용 방지용 익명 해시(device_hash, 되돌릴 수
// 없는 HMAC — src/lib/device-hash.ts)뿐이고, IP는 현재 애플리케이션
// 레벨에서 별도로 기록하지 않는다(Supabase/Vercel 등 인프라 접속 로그에는
// 통신비밀보호법에 따라 남을 수 있음). 이 문서는 그 실제 구현에 맞춰 작성했다.

여기서 신경 쓴 부분은 두 가지다.

  1. 수집 항목을 코드와 1:1로 맞추기. "기기 식별 해시값", "쿠키", "이용자가 업로드한 이미지" 세 가지만 명시했다. 실제로 저장하지 않는 것(이름, 이메일, IP 애플리케이션 레벨 기록)까지 있는 척 부풀리지 않았다.
  2. 인프라 레벨의 회색지대도 숨기지 않기. Supabase나 Vercel 같은 인프라 자체의 접속 로그에는 통신비밀보호법에 따라 IP가 남을 수 있다는 사실도 괄호로 명시했다. 애매하게 넘어가느니 있는 그대로 적는 게 나중에 덜 골치 아프다.

보유 기간도 마찬가지로 "목적 달성 시 지체 없이 파기"를 원칙으로 하되, 통신비밀보호법에 따른 통신사실확인자료 보관 기간(3~12개월) 같은 법정 예외는 그대로 남겨뒀다.

Step 3: 어디서든 찾을 수 있게 푸터에 연결

아무리 잘 써도 찾을 수 없으면 의미가 없다. 사이트 푸터에 두 페이지 링크를 추가해서 어느 페이지에서든 접근할 수 있게 했다. robots: { index: false }로 검색엔진 노출은 막아뒀다 — 법적 문서는 검색 유입을 노리는 콘텐츠가 아니라, 필요할 때 찾아볼 수 있으면 충분하기 때문이다.

트러블슈팅: "이 정도까지 써야 하나" 싶을 때 기준

작성하면서 계속 든 생각은 "이걸 다 지킬 수 있나, 너무 과한 거 아닌가"였다. 기준을 이렇게 잡았다.

  • 실제로 하고 있는 것만 약속한다. 예를 들어 "24시간 내 모든 신고 처리"처럼 지킬 수 있을지 불확실한 SLA성 문구는 넣지 않았다. "성실히 이행한다" 정도로만 표현하고, 실제 처리 절차(AI 1차 분류 + 사람 최종 검토)는 이미 구현되어 있는 걸 그대로 반영했다.
  • 없는 걸 있는 척하지 않는다. 회원 탈퇴, 개인정보 열람 청구 같은 문구를 형식적으로 넣고 싶은 유혹이 있었지만, 애초에 계정 자체가 없으니 해당 없음으로 명시했다.
  • 연락 채널 하나는 반드시 살아있게. 신고/문의 이메일을 명시했고, 실제로 그 주소가 동작하는지 확인했다. 문서에만 있고 받는 사람이 없는 연락처는 오히려 신뢰를 깎아먹는다.

정리

무수익 개인 프로젝트라고 해서 이용약관과 개인정보처리방침이 면제되는 건 아니었다. 정리하면 이렇다.

  1. 사업자등록 의무게시물 관리·개인정보 고지 의무는 서로 다른 법에서 오는 별개의 의무다. 전자가 없다고 후자도 없는 게 아니다.
  2. 위장하거나 숨기는 건 리스크를 줄여주지 않는다. 실질적 방어는 신고 → 임시조치 프로세스를 정보통신망법 44조의2에 맞춰 문서화하고 실제로 동작하게 만드는 것이다.
  3. 개인정보처리방침은 "우리가 실제로 저장하는 것"만 정직하게 적는다. 회원가입이 없어도 익명 해시나 쿠키를 저장한다면 그 자체가 개인정보 처리에 해당할 수 있다.
  4. 문서는 코드와 어긋나지 않아야 한다. 문서에 "신고를 성실히 처리한다"고 썼으면, 실제로 그 처리가 묻히지 않도록 관리자 화면을 다듬는 작업까지 이어지는 게 자연스럽다.

취미로 시작한 프로젝트라도 사람들이 실제로 쓰기 시작하면 "이 정도는 괜찮겠지"가 통하지 않는 순간이 온다. 트래픽이 커지기 전에 미리 정리해두길 잘했다는 생각이 들었다.

PM

backtodev

40대 PM, 다시 개발자로 돌아갑니다. 실패하고 배우며 성장하는 기록.