Berryproof
검수 사례
보안웹 서비스 보안 진단

쇼핑몰 출시 전 보안 진단

소규모 쇼핑몰 · AI 코딩 도구로 직접 개발 · 공개 주소 밖에서 점검

1보낸 것

✕점검 대상: http://shop.example-demo.kr
✕[응답 헤더] Set-Cookie: session=ab12…; Path=/
✕[공개 경로] /admin → 200 OK (로그인 화면 없이 주문 목록 표시)
✕[브라우저 코드] NEXT_PUBLIC_PAYMENT_SECRET=sk_live_…
✕[라이브러리] jquery-1.12.4.min.js
✓[회원가입 폼] 이름·휴대폰·주소 수집, 동의 항목 없음

2돌려받은 것

수정 필요

출시를 막아야 하는 문제 2개(관리자 화면 노출, 결제 키 노출)가 있어요. 위험한 순서대로 고칠 목록을 드려요.

  1. 1

    /admin → 200 OK (로그인 화면 없이 주문 목록 표시)

    관리자 화면에 로그인과 IP 제한을 걸고, 지금까지 노출됐는지 접속 기록을 확인하세요.

    실제 접속해 주문 목록 노출 확인. 가장 먼저 막아야 해요

  2. 2

    NEXT_PUBLIC_PAYMENT_SECRET=sk_live_…

    키를 즉시 재발급하고 서버 전용 환경 변수로 옮기세요.

    결제 비밀 키가 브라우저로 내려가요. 누구나 결제 취소·환불을 호출할 수 있어요.

  3. 3

    http://shop.example-demo.kr

    HTTPS를 켜고 http 요청을 https로 넘기세요.

    HTTPS가 아니라 로그인·주소 정보가 암호화되지 않아요.

  4. 4

    Set-Cookie: session=ab12…; Path=/

    Set-Cookie: session=…; Path=/; Secure; HttpOnly; SameSite=Lax

    Secure·HttpOnly 설정이 없어 세션을 가로채기 쉬워요.

  5. 5

    jquery-1.12.4.min.js

    jQuery 3.7 이상으로 올리거나 쓰지 않으면 빼세요.

    알려진 취약점이 있는 오래된 버전이에요.

  6. 6

    회원가입 폼: 이름·휴대폰·주소 수집, 동의 항목 없음

    수집 항목·목적·보관 기간 고지와 동의 체크, 처리방침 링크를 두세요.

    개인정보 수집·이용 동의가 없어요.

  7. 7

    응답 헤더 전체

    Content-Security-Policy, X-Frame-Options: DENY, Referrer-Policy 추가

    기본 보안 헤더가 하나도 없어요 (낮음)

고칠 목록

고칠 목록 (위험한 순서)
[즉시] /admin 로그인·IP 제한, 노출 기간 접속 기록 확인
[즉시] 결제 비밀 키 재발급 → 서버 전용 변수
[출시 전] HTTPS 적용, 세션 쿠키 Secure·HttpOnly
[출시 전] 회원가입 개인정보 동의
[권장] jQuery 업데이트, 기본 보안 헤더
전문가가 41분 동안 확인하고 서명확인서 보기 →