댓글 시스템에서 익명성과 삭제 권한을 나누는 방법
익명 댓글은 참여 장벽을 낮춥니다. 하지만 운영 관점에서는 책임 경계가 모호해집니다. 누가 자기 댓글을 삭제할 수 있는가, 관리자는 어떤 기준으로 개입할 수 있는가, 남용이 발생했을 때 어떤 단서를 남길 것인가를 먼저 정해야 합니다.
작성자 삭제는 비밀번호로 충분하다
가입 없는 댓글에서 작성자 삭제를 제공하려면 댓글별 비밀번호가 현실적인 선택입니다. 중요한 것은 비밀번호 원문을 저장하지 않는 것입니다. salt와 hash, 반복 횟수를 저장하고 삭제 요청 때 다시 계산해 비교하면 DB가 노출되어도 원문 비밀번호는 보호됩니다.
비밀번호는 계정 인증이 아니라 해당 댓글에 대한 삭제 권한입니다. 따라서 다른 댓글에 재사용되지 않아야 하고, 사용자가 잊어버리면 복구할 수 없다는 점도 정책으로 받아들여야 합니다.
관리자는 다른 권한 모델이다
관리자 세션이 있다면 익명 댓글도 비밀번호 없이 삭제할 수 있어야 합니다. 이것은 작성자 권한과 운영자 권한이 다르기 때문입니다. 운영자는 스팸, 개인정보 노출, 법적 문제, 서비스 품질 저하에 대응해야 합니다. 대신 관리자 삭제는 서버에서 세션을 확인해야 하며, 프런트엔드 버튼만 믿으면 안 됩니다.
추적 정보는 최소한으로 남긴다
남용 대응을 위해 IP 전체를 저장하는 것은 과할 수 있습니다. 익명 해시와 일부 preview 정도면 운영 판단에 도움이 되면서 개인정보 노출을 줄일 수 있습니다. 저장 목적이 분명하지 않은 식별자는 나중에 부담이 됩니다.
좋은 댓글 시스템은 자유롭게 쓰게 만드는 것과 운영자가 개입할 수 있게 만드는 것 사이의 균형입니다. 익명성은 방치가 아니고, 관리 권한은 임의 삭제가 아닙니다. 두 권한을 분리해서 설계해야 작은 블로그도 안정적으로 운영할 수 있습니다.
실제 적용 메모
이 사이트의 댓글 삭제는 두 경로로 나뉩니다.
작성자 삭제: 댓글 작성 시 입력한 비밀번호 검증
관리자 삭제: 관리자 세션 검증
작성자 비밀번호는 원문으로 저장하지 않습니다. 댓글마다 salt, hash, iterations를 저장하고 삭제 요청 때 다시 계산해 비교합니다. 반면 관리자는 비밀번호를 묻지 않습니다. 운영자는 스팸이나 개인정보 노출 댓글을 즉시 지울 수 있어야 하기 때문입니다.
중요한 점은 이 판단을 화면에서만 하면 안 된다는 것입니다. 버튼을 숨기는 것은 권한 처리가 아닙니다. 서버 API에서 관리자 세션을 확인하고, 세션이 없으면 작성자 비밀번호 검증 경로로 보내야 합니다.
이렇게 분리하면 익명 댓글의 진입 장벽은 낮추면서도 운영 대응 속도는 유지할 수 있습니다.
아직 댓글이 없습니다.