Skip to content

Repository files navigation

Secure Coding - Tiny Secondhand Shopping Platform

WhiteHat School 시큐어 코딩 과제. 중고거래 플랫폼(Flask + SQLite + Socket.IO)에 시큐어 코딩 원칙을 적용하여 구현하였습니다.

주요 기능

  • 회원가입 / 로그인 (계정 잠금, 세션 만료)
  • 프로필 관리 (소개글 수정, 비밀번호 변경 - 재인증)
  • 상품 등록 / 조회 / 검색 / 수정 / 삭제 (소유자 확인)
  • 실시간 전체 채팅 + 1:1 채팅 (Socket.IO)
  • 신고 기능 (사용자/상품, 중복·남용 방지, 누적 시 자동 차단/휴면)
  • 유저 간 송금 (잔액 기반)
  • 관리자 대시보드 (사용자/상품/신고 전체 관리)

환경 설정

1. Miniconda 설치 (이미 설치되어 있다면 생략)

https://docs.anaconda.com/free/miniconda/index.html

2. 레포지토리 클론 및 가상환경 생성

git clone <이 레포지토리 URL>
cd secure-coding
conda env create -f enviroments.yaml
conda activate secure_coding

또는 pip만 사용하는 경우:

pip install -r requirements.txt

3. (선택) 환경변수 설정

운영 환경으로 배포할 경우 아래 환경변수를 설정하는 것을 권장합니다.

export SECRET_KEY="<임의의 긴 랜덤 문자열>"
export FLASK_ENV=production   # HTTPS 환경에서 Secure 쿠키 플래그 및 HSTS 헤더 활성화
export FLASK_DEBUG=0          # 디버그 모드 비활성화 (스택트레이스 노출 방지)

환경변수를 설정하지 않으면 개발 모드(SECRET_KEY 랜덤 생성, debug 모드 활성화)로 동작합니다.

실행 방법

python app.py

최초 실행 시 market.db SQLite 파일이 자동 생성됩니다. 브라우저에서 http://127.0.0.1:5000 접속.

가장 먼저 회원가입하는 계정이 자동으로 관리자(admin) 권한을 갖습니다. (관리자 계정으로 상단 메뉴의 "관리자" 페이지에서 사용자/상품/신고를 관리할 수 있습니다.)

외부에서 접속 테스트를 하려면 ngrok을 사용할 수 있습니다.

# optional
sudo snap install ngrok
ngrok http 5000

데이터베이스 초기화

기존 데이터를 초기화하고 싶다면 market.db 파일을 삭제한 뒤 다시 python app.py를 실행하세요.

보안 체크리스트

secure_coding_checklist.csv 파일에 보안 요소별 적용 여부와 구현 위치를 정리했습니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages