본문 바로가기

Supabase SQL 쿼리로 민감한 데이터 한방에 별표 처리하기

codeConnection 2024. 6. 29.

상황

  • supabase에 민감한 자료가 있다.
  • 그런데 이것을 API 호출로 받아와서 렌더링 해야 하는데 부담스러운 상황이다.
  • 일단 데이터를 받아오고 프론트엔드에서 코드로 텍스트를 변환하는 방법도 있겠지만, CSR을 하지 않는 이상 네트워크 탭에서 응답값을 전부 볼 수 있기 때문에 SSR에서는 해결책이 아니다.
  • 처음부터 별표처리된 데이터를 받아오는 것이 가장 안전하겠다.
  • 그런데 원본 데이터를 훼손시킬 순 없으니 별표 처리 된 데이터 컬럼을 만들어서 그것을 가져오려고 한다.

방법

UPDATE bankstatement
SET securedname = CONCAT(
  LEFT(name, 2),
  REPEAT('*', GREATEST(LENGTH(name) - 2, 0))
);
  • bankstatement : 데이터 베이스 테이블 이름
  • scuredname : 새롭게 별표 처리해서 복제할 컬럼 이름
  • LEFT(name, 2) : 원본 데이터가 있는 name 컬럼에서 왼쪽에서 2글자를 가져옴.
  • LENGTH(name) : name 컬럼의 전체 길이를 가져옴.
  • GREATEST(LENGTH(name) - 2, 0) : name의 전체 길이에서 두 글자를 뺀 값과 0 중 큰 값을 선택함. 즉 name 컬럼이 2글자 이하일 때도 음수가 되지 않게 하기 위함.
  • REPEAT('*', GREATEST(LENGTH(name) - 2, 0)) : 나머지 글자 수만큼 별표를 반복함.
  • CONCAT(LEFT(name, 2), REPEAT('*', GREATEST(LENGTH(name) - 2, 0))) : 첫 두 글자와 별표 문자열을 합쳐 새로운 문자열을 생성함.

이 쿼리를 만들어 놓고 필요할 때마다 계속 add를 눌러가면서 사용하면 될 것 같다.

댓글