개발
2025-04-13 ~ 2025-04-23
1분 읽기

My Market

실시간 채팅, 송금, 검색, 신고 기능까지 갖춘 Flask 기반 중고마켓 플랫폼

1. 프로젝트 개요

My Market ‘My Market’은 중고마켓 플랫폼 개발을 통한 개발 및 시큐어코딩 지식 학습을 위한 프로젝트로, 보안 취약점을 최대한 방어하는 데 집중하였습니다.

2. 기술 스택

Frontend: Html, Css, Js
Backend: Flask
Database: SQLite
Deploy: AWS EC2

3. 요구사항

3-1. 기능 요구사항

  • 사용자 가입, 로그인, 프로필 수정
  • 상품 등록, 조회, 검색
  • 실시간 채팅
  • 사용자 및 상품 신고/차단 기능
  • 캐시를 활용한 송금 기능
  • 관리자 페이지 (상품/사용자/채팅 관리)

3-2. 비기능 요구사항

  • 비밀번호 암호화 저장
  • 유지보수성 고려한 모듈화 코드 구성

4. 주요 개발 사항

  • Flask-Login으로 세션/인증 처리
  • Flask-WTF + SQLAlchemy로 상품 등록, ORM 구현
  • socket 통신을 활용한 실시간 채팅 기능 구현
  • Flask-Admin을 이용한 관리자 페이지 구성

4-1. 보안 및 인증

  • bcrypt로 비밀번호 해시 암호화
  • Flask-WTF로 XSS, SQL Injection, CSRF 방지
  • 프론트+백엔드 양단의 입력 길이 검증

4-2. 기능 작동

  • 회원가입 / 로그인 페이지
  • 대시보드 및 상품 검색
  • 실시간 채팅 기능
  • 상품 등록 / 확인 페이지
  • 프로필 및 소개글 작성
  • 신고하기 페이지
  • 관리자 페이지(사용자, 상품, 채팅 관리)

5. 테스트 수행

5-1. 테스트 계정

  • ID: test
  • PW: test1234

5-2. 테스트 내용

  • 상품 / 판매자명으로 검색
  • 새 상품 등록
  • 상품 구매
  • 실시간 채팅
  • 프로필 소개글 수정
  • 사용자 / 판매글 신고

5-3. 발견된 보안 취약점 및 조치

  1. 비밀번호 평문 저장
    → bcrypt 해싱으로 암호화 저장
  2. 폼 입력값 검증 부족
    → Flask-WTF로 유효성 검증 및 보안 강화
  3. 폼 입력 길이 제한 없음
    → 프론트/백엔드 양측에 입력 길이 제한 추가

6. 링크

6-1. GitHub

6-2. 배포