Ruby on Rails로 웹사이트 개발하면서 보안 계획 세우기

소개

Ruby on Rails로 웹사이트 개발하면서 백엔드시스템이 있고, 회원정보 등을 보유하는 웹사이트다 보니, 보안 계획을 점검해봤습니다. 제가 시스템 보안에 대한 개념이 없고, 스터디멤버 수리아님의 사례를 보니, 한번 정리해놔야겠다는 생각이 들었습니다.

AI에 간단히 물어보니, 보안 적용이 단계마다 필요해서 나중에 다 하려면 구조를 바꿔야 할 수도 있다고 하더군요.

진행 방법

이 프로젝트에서 필요한 보안 계획을 정리해주세요. 

대략 요약하면 이런 내용입니다.

📋 보안 계획서 개요

📊 현황

  • 이미 구현됨: HTTPS, Devise 인증, CSRF/SQL Injection/XSS 기본 방어, Brakeman 설치

  • 주요 취약점: 약한 비밀번호 정책(최소 4자), 계정 잠금/세션 타임아웃 없음, Rate Limiting 없음, 민감정보 평문 저장

⚠️ 주요 위협

  • 시니어 특화 위협: 보이스피싱 사칭, 쉬운 비밀번호 사용, 로그아웃 미숙지

  • 일반 웹 위협: SQL Injection, XSS, CSRF, 세션 하이재킹, 무차별 대입 공격

  • 법적 요구사항: 개인정보보호법 준수 (동의 절차, 고유식별정보 암호화, 보유기간 명시)

🔧 Phase별 보안 작업

Phase 1: 기본 보안 강화 (즉시)

  • 비밀번호 8자 이상 + 영문/숫자 조합

  • 계정 잠금 (5회 실패 시 30분)

  • 세션 타임아웃 2시간

  • Rate Limiting (로그인/회원가입 제한)

  • 보안 헤더 설정 (CSP, X-Frame-Options 등)

  • 민감정보 암호화 (전화번호, 실명, 생년월일)

  • 개인정보 처리방침 게시

Phase 2: 이미지 업로드 보안 (5-10주차)

  • AWS S3 설정

  • 파일 타입/크기 검증 (JPEG/PNG/WebP, 5MB 이하, 최대 5장)

  • ClamAV 악성코드 스캔

  • 업로드 Rate Limiting

Phase 3: AI 및 외부 API 보안 (11-16주차)

  • OpenAI API 일일 사용량 제한 (10회)

  • 카카오톡 공유 도메인 검증

  • API 키 로테이션 정책 (3개월)

Phase 4: 커뮤니티 보안 (17-20주차)

  • XSS 방지 강화 (Sanitize)

  • 욕설 필터링

  • 댓글 신고 시스템

  • 비회원 응원 Rate Limiting

📅 정기 점검

  • 월간 체크: Gem 취약점 검사, Brakeman 스캔, 세션 정리, 로그인 실패 분석, 관리자 활동 로그

🚨 사고 대응

  1. 즉시 조치 (1시간 이내): 서비스 중단, 유출 경로 차단

  2. 신고 (24시간 이내): 개인정보보호위원회, 사용자 알림

  3. 사후 조치: 비밀번호 초기화, 취약점 패치, 재발 방지

계획은 정리했는데, 개발 단계와 순서를 알지 못하니, 다시 AI에 요청했습니다.

문서 업데이트하고, 개발 단계마다 필요한 시점에 작업 제시해주세요. 

Docs에 security.md 파일이 생성되었습니다.

컴퓨터의 코드 편집기 스크린샷

결과와 배운 점

보안 계획은 세웠으나, 과도하거나 부족한 것은 판단할 수 있어야 할 것 같은데, 계획을 이해하는 것이 또 비개발자의 과제입니다.

역시 스터디 멤버들의 사례를 보면서 또 배웁니다.^^

도움 받은 글 (옵션)

수리아님의 사례

https://www.gpters.org/nocode/post/selfcreated-stockdelivery-recipe-linkage-cp72VEGR5ihGiJ6

1
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 오후,
읽고 바로 써먹을 AI 소식만