Flutter Auth Cross Audit

7개 Flutter 앱 인증 보안 크로스 감사 - iOS 제출 전 점검

이전 글에서 Flutter + Rails 앱의 세션 버그 3개를 고쳤다. 고치고 나니 궁금해졌다. 다른 프로젝트에도 같은 문제가 있지 않을까? iOS 1.0 제출을 앞둔 7개 Flutter 앱을 대상으로 인증/보안 크로스 감사를 진행했다. 감사 결과 요약 프로젝트 인증 방식 결과 앱 A (부동산 계약서) 자체 JWT + SecureStorage ✅ 양호 앱 B (AI 여행) 자체 JWT + SharedPreferences 🔴 3건 앱 C (팀 관리) 자체 JWT + SharedPreferences 🔴 2건 앱 D (운세/MBTI) Firebase Auth + Supabase 🔴 1건 앱 E (필름 스캐너) Supabase Auth ✅ 양호 앱 F (AI 미디어) Supabase Auth ✅ 양호 앱 G (음성 대화) - ⏭️ 미확인 Supabase SDK가 인증을 관리하는 앱은 모두 양호했고, 자체 JWT 구현 앱에서만 문제가 있었다. ...

2025-10-21 · 2분 소요 · Seunghan
Rails Api Token Not Null Constraint

Rails API 토큰 생성: NOT NULL 컬럼 누락으로 발생하는 오류

Rails API 서버에서 소셜 로그인(SSO) 후 토큰을 발급하는 로직을 작성하다가 발생한 문제를 정리한다. 상황 Apple Sign In / Google Sign In 후 서버에서 access token과 refresh token을 발급해 클라이언트에 반환해야 한다. 컨트롤러에서 아래와 같이 직접 생성을 시도했다. token = user.api_tokens.create!( token_type: "bearer", expires_at: 1.hour.from_now ) 오류 ActiveRecord::NotNullViolation: PG::NotNullViolation: ERROR: null value in column "token_digest" violates not-null constraint 원인 api_tokens 테이블의 실제 스키마를 확인해보니 아래 컬럼들이 NOT NULL로 정의되어 있었다. # db/schema.rb create_table "api_tokens" do |t| t.string "token_digest", null: false # SHA-256 해시값 t.string "refresh_token_digest", null: false # refresh token 해시값 t.datetime "refresh_expires_at", null: false # refresh 만료 시각 t.string "jti", null: false # JWT ID (중복 방지) # ... end 직접 create!를 호출하면 이 컬럼들에 값이 자동으로 채워지지 않는다. ...

2025-06-22 · 2분 소요 · Seunghan
개인정보처리방침 문의