🌍 μ›Ή λ°±μ—”λ“œ

  • μ›Ή
    • 인터넷
    • HTTP
    • DNS, 도메인
  • ν”„λ‘œκ·Έλž˜λ° 언어와 μ›Ή ν”„λ ˆμž„μ›Œν¬
    • Elixir with phoenix
    • JavaScript with NextJS
  • 버전 컨트둀과 ν˜‘μ—…
    • Git
    • GitHub
  • database
    • RDBMS (PostgreSQL)
    • NoSQL λ°μ΄ν„°λ² μ΄μŠ€
    • N+1 문제, νŠΈλžœμž­μ…˜, μ •κ·œν™”, ACID, ORM, 인덱싱, ...
  • API
    • μƒνƒœ 관리 (μΏ ν‚€, μ„Έμ…˜, JWT)
    • 인/ν—ˆκ°€
    • REST, JSON, gRPC, GraphQL, ...
  • ν…ŒμŠ€νŠΈ
    • λ‹¨μœ„ ν…ŒμŠ€νŠΈ
    • 톡합 ν…ŒμŠ€νŠΈ
    • 쒅단간 ν…ŒμŠ€νŠΈ
    • CI
  • λ³΄μ•ˆ
    • 단방ν–₯ μ•”ν˜Έν™” (ν•΄μ‹±)
    • μ–‘λ°©ν–₯ μ•”ν˜Έν™” (λŒ€μΉ­, λΉ„λŒ€μΉ­)
    • SSL/TLS
  • 배포
    • μ›Ήμ„œλ²„ (nginx)
    • CI/D
    • 가상화와 μ»¨ν…Œμ΄λ„ˆ
  • 기초 CS
    • 운영체제
    • λ™μ‹œμ„± 문제
    • ν”„λ‘œμ„ΈμŠ€ 관리

λ³΄μ•ˆ

OWASP

OWASP Top Ten | OWASP Foundation

OWASP(Open Web Application Security Project)λŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λŒ€ν•œ λ³΄μ•ˆμ„ μ—°κ΅¬ν•˜λŠ” ν”„λ‘œμ νŠΈμ΄λ‹€. 그쀑 영ν–₯λ ₯이 큰 10개λ₯Ό 3~4년에 ν•œ 번 μ”© TOP10으둜 λ°œν‘œν•œλ‹€. λ²ˆν˜ΈλŠ” A번호:λ…„λ„λ‘œ 뢙인닀.

OWASP Cheat Sheet Series

OWASP Cheat Sheetμ—μ„œ 각 곡격 방법에 λŒ€ν•œ μ†Œκ°œμ™€ 방어법을 κ°„κ²°ν•˜κ²Œ λ³Ό 수 μžˆλ‹€.

CSRF

Cross Site Request Forgery (CSRF) | OWASP Foundation

Cross Site Request Forgery attack. 크둜슀-μ‚¬μ΄νŠΈ μš”μ²­ λ³€μ‘°λŠ” 인증된 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν†΅ν•˜μ—¬ μ‚¬μš©μžκ°€ μ›μΉ˜ μ•ŠλŠ” μž‘μ—…μ„ μ‹€ν–‰ν•˜λŠ” 곡격이닀.

CSRF 토큰

  • μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ¬΄μž‘μœ„ν•˜κ³  μœ μΌν•œ CSRF 토큰을 λ°œν–‰ν•œλ‹€.
  • ν΄λΌμ΄μ–ΈνŠΈλŠ” μš”μ²­μ„ 보낼 λ•Œ CSRF 토큰을 ν¬ν•¨ν•˜μ—¬ μš”μ²­μ„ 보낸닀.
  • μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ 보낸 CSRF 토큰이 μœ νš¨ν•œμ§€ ν™•μΈν•˜μ—¬ μš”μ²­μ΄ μ•ˆμ „ν•œμ§€ κ²€μ¦ν•œλ‹€.

κ³΅κ²©μžλŠ” μœ νš¨ν•œ CSRF 토큰을 λ§Œλ“€μ–΄λ‚Ό 수 μ—†κΈ° λ•Œλ¬Έμ—, κ³΅κ²©μžκ°€ μ˜λ„ν•œ μš”μ²­μ΄ μ•„λ‹˜μ„ μ•Œ 수 μžˆλ‹€.

λŒ€λΆ€λΆ„μ˜ μ›Ή ν”„λ ˆμž„μ›Œν¬λŠ” μ•„λž˜μ™€ 같이 form을 생성할 λ•Œ CSRF 토큰 ν•„λ“œλ₯Ό ν•¨κ»˜ μƒμ„±ν•œλ‹€:

Phoenix ν”„λ ˆμž„μ›Œν¬κ°€ μƒμ„±ν•œ csrf_token

ν…ŒμŠ€νŠΈ

원칙

  1. λΉ¨λΌμ•Όν•œλ‹€ -- 각 ν…ŒμŠ€νŠΈλŠ” λΉ¨λΌμ•Όν•˜λ©° κ°€λŠ₯ν•˜λ©΄ λ™μ‹œμ μœΌλ‘œ 돌릴 수 μžˆμ–΄μ•Ό ν•œλ‹€.
  2. λ…λ¦½λ˜μ–΄μ•Όν•œλ‹€ -- 적정 μˆ˜μ€€μ˜ 독립성을 μœ μ§€ν•΄μ•Όν•œλ‹€. λ„ˆλ¬΄ 독립적이면 μœ μš©ν•˜μ§€ μ•Šκ³ , 독립적이지 λͺ»ν•˜λ©΄ 이해와 관리가 μ–΄λ ΅λ‹€.
  3. DRY -- μ“Έλͺ¨μ—†λŠ” 반볡이 μ—†μ–΄μ•Ό ν•œλ‹€.
  4. λ°˜λ³΅κ°€λŠ₯ν•΄μ•Όν•œλ‹€ -- 같은 μ½”λ“œλ₯Ό 같은 ν…ŒμŠ€νŠΈλ₯Ό 돌리면 κ·Έ 결과도 κ°™μ•„μ•Όν•œλ‹€.

μ’…λ₯˜

  1. λ‹¨μœ„ ν…ŒμŠ€νŠΈ -- μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 단일 κ³„μΈ΅μ˜ 각 κΈ°λŠ₯을 κ²€μ¦ν•œλ‹€.
  2. 톡합 ν…ŒμŠ€νŠΈ -- μ—¬λŸ¬ 계측이 ν•¨κ»˜ 잘 λ™μž‘ν•˜λŠ”μ§€ κ²€μ¦ν•œλ‹€.

μ°Έκ³ 

  • Chris McCord, Bruce Tate and JosΓ© Valim, Programming Phoenix β‰₯ 1.4.

μ°Έκ³