Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tiny Market

중고거래 플랫폼 (화이트햇 스쿨 4기 시큐어 코딩 과제). Flask + SQLite로 구현하며 입력값 검증을 비롯한 시큐어 코딩을 적용한다.

환경 설정 및 실행

Python 3.10 이상 필요.

# 1. 가상환경 생성 및 활성화
python3 -m venv venv
source venv/bin/activate        # Windows: venv\Scripts\activate

# 2. 의존성 설치
pip install -r requirements.txt

# 3. 실행 (최초 실행 시 DB가 자동 생성됨)
python3 app.py

브라우저에서 http://127.0.0.1:5000 접속.

관리자 계정 지정

관리자 권한은 코드가 아닌 데이터베이스에서 부여한다(권한 부여를 애플리케이션 밖에서 통제).

sqlite3 market.db "UPDATE users SET role='admin' WHERE username='본인아이디'"

이후 그 계정으로 로그인하면 상단에 관리자 메뉴가 보인다.

구현 기능

  • 유저 관리 (회원가입, 로그인, 사용자 조회, 마이페이지)
  • 상품 관리 (등록, 조회, 상세, 내 상품 관리)
  • 채팅 (전체, 1대1)
  • 신고/차단 (신고, 상품 차단, 유저 휴면)
  • 송금
  • 검색
  • 관리자

적용한 시큐어 코딩 (요약)

  • 모든 DB 접근에 파라미터 바인딩을 사용해 SQL 인젝션 차단
  • 비밀번호는 해시로만 저장(werkzeug), 로그인 실패 메시지는 계정 존재 여부를 노출하지 않음
  • 입력값 화이트리스트 검증(아이디 형식, 길이, 가격/금액 범위)
  • Jinja2 자동 이스케이프로 저장형 XSS 차단
  • 세션 쿠키 HttpOnly와 SameSite, 로그인 시 세션 재발급
  • 소유권/권한 검사(내 상품만 수정·삭제, 관리자 전용 페이지)
  • 이미지 업로드 확장자 화이트리스트와 랜덤 파일명, 크기 제한
  • 송금은 조건부 UPDATE로 잔액 부족/음수/경쟁조건 방지

기술 스택

  • Flask (웹 프레임워크)
  • SQLite (데이터베이스)
  • Jinja2 (템플릿, 자동 이스케이프)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages