πλΉμ μ΄ μμμΌ ν API 보νΈλ₯Ό μν 7κ°μ§ λ°©λ²
Source: Dev.to
λ²μνλ €λ μ 체 ν μ€νΈ(λ§ν¬λ€μ΄ νμ ν¬ν¨)λ₯Ό μ κ³΅ν΄ μ£Όμλ©΄, μμ²νμ λλ‘ νκ΅μ΄λ‘ λ²μν΄ λλ¦¬κ² μ΅λλ€. μ½λ λΈλ‘κ³Ό URLμ κ·Έλλ‘ μ μ§νκ³ , λλ¨Έμ§ λ΄μ©λ§ λ²μν΄ λ립λλ€.
1οΈβ£ Rate Limiting
무μμΈκ°μ? APIμ μλ μ νμ μ μ©ν©λλ€.
μ΄λ»κ² μλνλμ? νΉμ μκ° λμ μ¬μ©μκ° Xκ°μ μμ²λ§ ν μ μλλ‘ μ νν©λλ€.
μ΄λ»κ² ꡬννλμ? λ―Έλ€μ¨μ΄, NGINXμ κ°μ νλ‘μ, λλ IPλ ν ν°λ³ μμ² μλ₯Ό μ μ΄νλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν©λλ€.
무μμ λ°©μ§νλμ? λ¬΄μ°¨λ³ λμ
곡격μ΄λ μ€νΈμ λ°©μ§ν©λλ€.
μμ: μλΉμ€κ° μλ€κ³ κ°μ νκ³ , μ¬μ©μκ° μλ²λ₯Ό ν¬νμν€κΈ° μν΄ μ§μμ μΌλ‘ μμ²μ 보λΈλ€κ³ μμν΄ λ³΄μΈμ. Rate Limitingμ ꡬννμ§ μμΌλ©΄, μ¬μ©μκ° μμ€ν μ λͺ¨λ μμμ μλΉνμ¬ λ€λ₯Έ μ¬μ©μμκ² μν₯μ μ£Όκ³ μλΉμ€ μ₯μ λ₯Ό μΌμΌν¬ μ μμ΅λλ€.
2οΈβ£ CORS (Cross-Origin Resource Sharing)
무μμΈκ°μ? APIλ₯Ό μ¬μ©ν μ μλ μ¬μ΄νΈλ₯Ό κ²°μ νλ κΆν μμ€ν
μ
λλ€.
μ΄λ»κ² μλνλμ? βμ λ’°ν μ μλ λλ©μΈβλ§ νμ©ν©λλ€.
μ΄λ»κ² ꡬννλμ? μλ² λλ Express, Django, .NET κ°μ νλ μμν¬μμ κ·μΉμ μ€μ νμ¬ νμ©λ μΆμ²λ₯Ό μ μν©λλ€.
무μμ λ°©μ§νλμ? μ΄λ μΉμ¬μ΄νΈμμλ λκ΅°κ°κ° λΉμ μ λ°μ΄ν°λ₯Ό νμΉλ €λ κ²μ λ°©μ§ν©λλ€.
μμ: λ―Όκ°ν μ 보μ μ κ·Όν μ μλ μλΉμ€λ₯Ό κ°μ§κ³ μκ³ , λꡬλ μ κ·Όν΄μλ μ λλ€κ³ μμν΄ λ³΄μΈμ. CORSλ₯Ό μ€μ νλ©΄ μ 보λ₯Ό μ κ·Όν μ μλ APIμ λκ° μ κ·Όν μ μλμ§ λͺ©λ‘μ λ§λλ κ²μ λλ€.
3οΈβ£ SQL λ° NoSQL μΈμ μ
무μμΈκ°? 곡격μκ° λ°μ΄ν°λ² μ΄μ€ 쿼리μ μ
μ± μ½λλ₯Ό μ½μ
ν λ.
μ΄λ»κ² μλνλμ? κ²μ¦λμ§ μμ μ
λ ₯μ μ΄μ©ν΄ μ 보λ₯Ό μ‘°μνκ±°λ, νμ·¨νκ±°λ, μμ ν©λλ€.
μ΄λ»κ² ꡬννλμ? νλΌλ―Έν°νλ 쿼리, ORM, κ·Έλ¦¬κ³ νμ μ¬μ©μ μ
λ ₯μ κ²μ¦ν¨μΌλ‘μ¨ κ΅¬νν©λλ€.
무μμ λ°©μ§νλμ? μ 보 νμ·¨ λ° λκ·λͺ¨ λ°μ΄ν° μμ λ₯Ό λ°©μ§ν©λλ€.
μμ: λμκ΄μμ μ± μ μμ²νκΈ° μν΄ μμμ μμ±νλλ°, λκ΅°κ°κ° βHarry Potterβ λμ βHarry Potterμ μ°½κ³ μ΄μ λ₯Ό μ£ΌμΈμβλΌκ³ μ λ κ²κ³Ό κ°μ΅λλ€.
4οΈβ£ λ°©νλ²½
무μμΈκ°? μ’μ νΈλν½κ³Ό λμ νΈλν½μ ꡬλΆνλ λμ§νΈ μ₯λ²½μ
λλ€.
μ΄λ»κ² μλνλμ? μμ²μ νν°λ§νκ³ μμ¬μ€λ¬μ΄ μμ²μ μ°¨λ¨ν©λλ€.
μ΄λ»κ² ꡬννλμ? WAF(μΉ μ ν리μΌμ΄μ
λ°©νλ²½)λ₯Ό μ€μ νκ±°λ μΈνλΌ(AWS, Azure, GCP)μ λ°©νλ²½ κ·μΉμ ꡬμ±ν©λλ€.
무μμ λ°©μ§νλμ? μ§μ μ μΈ κ³΅κ²© λ° λ¬΄λ¨ μ κ·Όμ λ°©μ§ν©λλ€.
μμ: 건물 μ ꡬμ κ²½λΉμ κ°μ΅λλ€: μ£Όλ―Όμ ν΅κ³Όμν€κ³ λ€λ₯Έ λͺ¨λ μ¬λμ μ κ·Όμ κ±°λΆν©λλ€.
5οΈβ£ VPNs (Virtual Private Networks)
무μμΈκ°? μ¨λΌμΈμμ λΉμ μ μ μμ μ¨κΈ°λ μμ νκ³ μνΈνλ μ°κ²°.
μ΄λ»κ² μλνλμ? νΈλν½μ μνΈνλ ν°λμ ν΅ν΄ μ λ¬νκ³ IPλ₯Ό λ³κ²½ν©λλ€.
μ΄λ»κ² ꡬννλμ? μ°κ²°λ μ¬λλ§ APIμ μ κ·Όν μ μλλ‘ κΈ°μ
VPNμ μ€μ ν©λλ€.
무μμ λ°©μ§νλμ? κ³΅μ© λ€νΈμν¬μμμ λ°μ΄ν° λλ λ° μμΉ μΆμ μ λ°©μ§ν©λλ€.
μμ: λΉμ μ APIκ° κΈ°μ λ€νΈμν¬μμλ§ μ κ·Ό κ°λ₯ν΄μΌ νλ€κ³ μμν΄ λ³΄μΈμ. μ§μ΄λ κ³΅μ© λ€νΈμν¬μμ μ°κ²°ν λ λ¨Όμ VPN μ°κ²°μ μ€μ ν©λλ€. VPNμ μνΈνλ ν°λμ μμ±νμ¬ λΉμ μ μ₯μΉκ° μ¬λ¬΄μ€ λ€νΈμν¬ λ΄λΆμ μλ κ²μ²λΌ λμνκ² νλ©°, μΈν°λ·μ λ ΈμΆμν€μ§ μκ³ μμ νκ² APIμ μ κ·Όν μ μκ² ν©λλ€.
6οΈβ£ CSRF (Cross-Site Request Forgery)
ΒΏQuΓ© es? λμΈκ°μ? μ¬μ©μλ₯Ό μμ¬ λͺ¨λ₯΄κ² νλμ μ€ννκ² νλ 곡격μ
λλ€.
ΒΏCΓ³mo funciona? μ΄λ»κ² μλνλμ? 곡격μλ μ¬μ©μμ λΈλΌμ°μ κ° μμ μ μ΄λ¦μΌλ‘ μμ‘°λ μμ²μ 보λ΄λλ‘ ν©λλ€.
ΒΏCΓ³mo lo implemento? μ΄λ»κ² ꡬννλμ? CSRF ν ν°, λ§μΆ€ ν€λ λ° μλ² μΈ‘ κ²μ¦μ μ¬μ©ν©λλ€.
ΒΏQuΓ© previene? 무μμ λ°©μ§νλμ? μ¬μ©μμ λμ μμ΄ μ΄μ²΄λ λΉλ°λ²νΈ λ³κ²½κ³Ό κ°μ λ¬΄λ¨ νλμ λ°©μ§ν©λλ€.
Ejemplo: μμ: λΈλΌμ°μ νμμ μν μμ€ν μ λ‘κ·ΈμΈν μνλΌκ³ μμν΄ λ³΄μΈμ. κ·Έ ν μ μ± νμ΄μ§λ₯Ό λ°©λ¬Ένλ©΄, λμΉμ±μ§ λͺ»ν μ¬μ΄μ νμ± μΈμ μ μ΄μ©ν΄ λμ μ΄μ²΄νλ μμ²μ 보λ λλ€. APIκ° CSRF ν ν°μ κ²μ¦νμ§ μμΌλ©΄ μλ²λ ν΄λΉ μμ²μ μ μμ μΈ κ²μΌλ‘ νλ¨νκ³ , λΉμ μ λμ μκ² λ©λλ€.
7οΈβ£ XSS (Cross-Site Scripting)
무μμΈκ°? μΉ νμ΄μ§μ μ
μ± μ€ν¬λ¦½νΈλ₯Ό μ½μ
ν©λλ€.
μ΄λ»κ² μλνλμ? μ½λκ° μ¬μ©μμ λΈλΌμ°μ μμ μ€νλ©λλ€.
μ΄λ»κ² ꡬννλμ? λμ μ½ν
μΈ λ₯Ό λͺ¨λ μ΄μ€μΌμ΄ννκ³ κ²μ¦νλ©°, ContentβSecurityβPolicy (CSP)μ κ°μ ν€λλ₯Ό μ¬μ©ν©λλ€.
무μμ λ°©μ§νλμ? μΏ ν€ λλ, λ―Όκ°ν λ°μ΄ν° μ μΆ λλ κ°μ§ μ¬μ΄νΈλ‘μ 리λλ μ
μ λ°©μ§ν©λλ€.
μμ: μ μμ μΈ μ¬μ©μκ° κ³΅κ° νμ΄μ§μ μ½λλ₯Ό μ½μ ν©λλ€. νμ΄μ§μ λ€μ΄μ€λ λͺ¨λ λ°©λ¬Έμλ μ΄λ₯Ό μμ§ λͺ»ν μ± μ½λλ₯Ό μ€νν©λλ€. λ°μ΄ν° κ²μ¦κ³Ό CSPλ μ λ’°ν μ μλ μ½ν μΈ κ° λΈλΌμ°μ μμ μ€νλλ κ²μ λ°©μ§ν©λλ€.
π‘ μμ½
λΉμ μ APIλ κ·μ€ν λ¬Όκ±΄μ΄ κ°λν μ§κ³Ό κ°μ΅λλ€: λ°μ΄ν°, μ¬μ©μ, λΉμ¦λμ€ νλ‘μΈμ€. λ¬Έμ μ΄μ΄λλ©΄ μΈμ κ° λκ΅°κ° λ€μ΄μ΅λλ€.
- Rate Limiting β κ·Έλ€μ λν μ κ·Όμ μ μ΄ν©λλ€.
- CORS β νν° μ΄λ λͺ λ¨.
- SQL/NoSQL Injection β ν¨μ μ΄ λ€μ΄κ° νΌ.
- Firewalls β μ ꡬμ κ²½λΉμ.
- VPNs β λΉλ° ν΅λ‘.
- CSRF β κ³μ½μμ μμ‘° μλͺ .
- XSS β μλ¦¬μΌ λ°μ€μ μ¨κ²¨μ§ λ©μμ§.
π μ΄λ¬ν μ‘°μΉλ₯Ό ꡬννλ€κ³ ν΄μ APIκ° μμ ν 무μ μ΄ λλ κ²μ μλμ§λ§, μ¬λ¬ λ°©μ΄ μΈ΅μ κ°κ² λ©λλ€. νμ€ μνμ²λΌ λ¬Έλ§ λ«λ κ²μΌλ‘λ μΆ©λΆνμ§ μμ΅λλ€: μλ¬Όμ , 경보, μΉ΄λ©λΌ, κ·Έλ¦¬κ³ κ°λ₯νλ€λ©΄ μ’μ κ²½λΉκ²¬ πΆμ΄ νμν©λλ€.