자동화 알림에 새어 나갈 수 있는 것들 — 메일 본문, 에러 응답, 폼 화면, 백업 파일

자동화를 만들 때는 「무엇을 보낼지」를 정합니다. 그런데 네 번을 만들고 보니, 보내기로 하지 않은 것이 같이 실려 있는 것을 네 번 봤습니다. 메일 본문에, 에러 응답에, 고객이 보는 화면에, 그리고 백업 파일에. 모두 시험하다가 저희 쪽에서 발견한 것이라 밖으로 나간 것은 없었지만, 그대로 썼다면 나갔을 것들입니다. 어느 것도 에러가 나지 않았고, 원문을 한 줄씩 읽어서야 보였습니다.

이 글은 그 네 곳의 기록입니다. 경로나 이름은 전부 자리표시로 바꿨습니다.

1. 메일 본문 — 원문을 통째로 붙이면 폴더 경로가 따라옵니다

n8n 워크플로가 실패하면 메일로 알려 주는 장치를 만들 때였습니다. 무엇이 실패했는지 한 번에 보려고, 메일 본문에 받은 데이터를 통째로 붙였습니다.

{{ JSON.stringify($json) }}

메일은 잘 왔습니다. 그런데 그 안의 스택 트레이스에 이 PC의 사용자 폴더 경로가 그대로 실려 있었습니다. C:\Users\(사용자 이름)\AppData\… 식입니다. 시험용으로는 편했지만, 이 메일을 회사 메일로 여러 사람에게 보낸다면 PC의 사용자 이름과 설치 위치가 같이 나갑니다.

고친 방법은 단순했습니다. 통째로 붙이지 않고, 필요한 칸만 뽑아서 적었습니다. 워크플로 이름, 실패한 노드, 에러 메시지, 실행 번호. 알림에 필요한 것은 그 정도였습니다.

2. 에러 응답 — 부르는 쪽 누구에게나 갑니다

같은 종류가 한 번 더 나왔습니다. 이번에는 메일이 아니라 응답이었습니다.

n8n에 웹훅을 만들고 저장만 한 채(Publish 전) 주소를 불렀더니 404가 돌아왔습니다. 원인은 Publish를 안 한 것이었고, 그건 고치면 끝났습니다. 문제는 그 404 응답 안에 stacktrace가 들어 있었고, 거기에 또 이 PC의 사용자 폴더 경로가 그대로 실려 있었다는 점입니다.

메일은 받는 사람이 정해져 있습니다. 응답은 그 주소를 부르는 쪽 누구에게나 갑니다. 저희가 본 것은 게시하지 않은 웹훅 주소를 불렀을 때 한 번이고, 게시된 웹훅에서 다른 종류의 에러가 날 때도 같은 내용이 실리는지는 시험하지 않았습니다. 그래도 한 번 실려 온 이상, 웹훅 주소를 밖에 열기 전에 에러 응답에 무엇이 실려 오는지 직접 받아 보는 편이 낫습니다. 이것은 저희가 설정으로 막은 것이 아니라, 응답을 읽다가 발견하고 기록해 둔 것입니다.

3. 폼 화면 — 고객에게 회사 이름이 보입니다

구글 폼으로 문의 접수 창구를 만들 때입니다. 회사의 구글 워크스페이스 계정으로 폼을 만들고 게시한 뒤, 로그인하지 않은 브라우저로 응답자 화면을 열어 봤습니다. 폼 맨 아래에 이런 문구가 있었습니다.

이 설문지는 (조직 이름) 내부에서 생성되었습니다

워크스페이스 계정으로 만든 폼은 고객 화면에 소속 조직 이름이 표시됩니다. 대부분은 문제가 안 되겠지만, 폼을 다른 이름으로 운영하려던 경우라면 여기서 어느 조직이 만든 것인지 드러납니다. 이 문구를 감추는 설정이 있는지는 찾아보지 않았습니다. 게시한 뒤에는 꼭 로그인하지 않은 창으로 한 번 열어 보시길 권합니다. 만든 사람 화면에서는 보이지 않는 줄입니다.

같은 구글 폼을 만든 사람 화면과 로그인하지 않은 응답자 화면으로 나란히 놓은 그림 — 응답자 화면 맨 아래에만 「이 설문지는 (조직 이름) 내부에서 생성되었습니다」가 보임

4. 백업 파일 — 한 옵션으로 비밀번호 파일이 됩니다

n8n을 백업하고 되살려 볼 때입니다. 자격증명(메일 서버 접속 정보 같은 것)을 명령줄로 내보냈더니, 파일 안의 값은 U2FsdG…로 시작하는 152자 암호문이었습니다. 기본이 암호화입니다.

그런데 --decrypted 옵션을 붙이자 6초 만에 user·password·host·port가 그대로 보이는 평문 파일이 나왔습니다. n8n 공식 문서도 이 옵션을 「Exports the credentials in a plain text format.」라고 적고 있습니다. 옵션 하나로 비밀번호 파일이 만들어지는 셈이라, 저희는 쓰고 나서 바로 지웠습니다.

암호화된 파일이라고 안심할 것도 아니었습니다. 자격증명을 잠근 열쇠는 .n8n 폴더 안의 config라는 56바이트짜리 파일 하나였습니다. 공식 문서의 설명도 같습니다. 「n8n creates a random encryption key automatically on the first launch and saves it in the ~/.n8n folder. n8n uses that key to encrypt the credentials before they get saved to the database.」 복원을 시험할 때, 암호화된 자격증명만 새 폴더에 넣었을 때는 풀리지 않았는데, 이 56바이트 파일 하나를 새 폴더에 복사하자 --decrypted 내보내기가 되고 비어 있던 칸이 채워졌습니다. 열쇠 파일과 암호화된 파일이 함께 있으면 풀린다는 것을 저희 손으로 확인한 셈입니다. 백업을 둘 때 이 두 파일은 떨어뜨려 두는 편이 낫습니다.

네 번에서 공통으로 본 것

네 번 모두 「보내기로 한 것」은 제대로 갔습니다. 문제는 그 옆에 붙어 있던 것이었습니다.

어디서 같이 실려 있던 것 알아챈 방법 대처
실패 알림 메일 본문 스택 트레이스 속 사용자 폴더 경로 받은 메일 원문을 끝까지 읽음 필요한 칸만 뽑아 보냄
웹훅 404 응답 (게시 전) 같은 경로 — 부르는 쪽 누구에게나 갈 수 있음 응답 원문을 읽음 열기 전에 에러 응답 확인
폼 응답자 화면 소속 조직 이름 로그인 안 한 창으로 열어 봄 게시 후 고객 화면 확인 (감추는 설정은 찾지 않음)
자격증명 백업 평문 비밀번호(옵션 하나), 열쇠 파일 내보낸 파일을 열어 봄 평문 파일은 쓰고 지움, 열쇠와 백업을 떨어뜨림

자동화를 내보내기 전에 점검표

  1. 알림 본문에 받은 데이터를 통째로 붙이지 않습니다. 필요한 칸만 뽑습니다
  2. 받은 메일과 응답은 원문을 끝까지 한 번 읽어 봅니다. 경로, 계정, 내부 주소가 있는지
  3. 밖에 여는 주소(웹훅)는 열기 전에 에러가 날 때의 응답을 직접 받아 봅니다
  4. 고객이 보는 화면(폼 등)은 로그인하지 않은 창으로 열어 봅니다
  5. 평문으로 내보낸 파일은 쓰고 바로 지웁니다
  6. 백업에서 열쇠 파일과 암호화된 파일을 같은 자리에 두지 않습니다

자동화를 넘겨받을 때 무엇을 챙길지는 자동화를 만든 사람이 퇴사하면에 따로 정리했습니다.

이 글이 다루지 않은 것

에러 응답에 스택 트레이스가 실리지 않게 하는 n8n 설정은 찾아보지 않았습니다. 게시하지 않은 웹훅의 404에서 본 것이 전부이고, 게시된 웹훅의 다른 에러에서도 실리는지는 시험하지 않았습니다.

폼 화면의 조직 이름을 감추는 설정도 찾아보지 않았고, 개인 Gmail 계정으로 만든 폼에서는 어떻게 보이는지 확인하지 않았습니다.

모든 기록은 한 PC, 한 계정에서 한 번씩 본 것입니다.

요약

항목 내용
메일 본문 원문 통째 → 사용자 폴더 경로가 같이 감. 필요한 칸만
에러 응답 게시 전 웹훅 404에 stacktrace → 부르는 쪽 누구에게나 갈 수 있음. 열기 전에 확인
폼 화면 워크스페이스 계정 폼은 응답자에게 조직 이름 표시
백업 기본은 암호문, --decrypted면 평문. 열쇠(config 56바이트)와 떨어뜨려 보관

보내기로 한 것만 나가게 하는 방법은 결국 한 가지였습니다. 나간 것의 원문을 한 번 끝까지 읽는 것.

참고 (2026-09-27 확인)
– n8n 공식 문서 — Use the command line (https://docs.n8n.io/deploy/host-n8n/configure-n8n/use-the-command-line): export 옵션 「–decrypted Exports the credentials in a plain text format. (Credentials only.)」
– n8n 공식 문서 — Set a custom encryption key (https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/configuration-examples/set-a-custom-encryption-key): 「n8n creates a random encryption key automatically on the first launch and saves it in the ~/.n8n folder. n8n uses that key to encrypt the credentials before they get saved to the database.」

Leave a Comment