์ผ์ƒ

[IT] ์„œ๋ฒ„์—ฐ๋™์‹œ api key๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ ˆ๋Œ€๋กœ ์•ฑ์— ํ•˜๋“œ์ฝ”๋”ฉ ํ•˜์ง€๋งˆ๋ผ

ipod apple 2025. 8. 8. 14:33
๋ฐ˜์‘ํ˜•

์„œ๋ฒ„๋ฅผ ํ†ตํ•ด API ํ‚ค๋‚˜ ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค๋ฉด, ๊ทธ ํ†ต์‹  ์ฑ„๋„๋„ ๋ฐ˜๋“œ์‹œ ์•ˆ์ „ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


โœ… ์•ˆ์ „ํ•œ ์ฑ„๋„์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด?

1. HTTPS (SSL/TLS) ์‚ฌ์šฉ – ํ•„์ˆ˜

  • HTTP๋Š” ์ ˆ๋Œ€ ๊ธˆ์ง€, ๋ฐ˜๋“œ์‹œ https:// ๋กœ๋งŒ ํ†ต์‹ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • TLS 1.2 ์ด์ƒ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • ์„œ๋ฒ„์— ์œ ํšจํ•œ SSL ์ธ์ฆ์„œ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ: Let's Encrypt ๊ฐ™์€ ๋ฌด๋ฃŒ ์ธ์ฆ์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๐Ÿ“Œ ์•ฑ์—์„œ HTTP๋กœ ์š”์ฒญํ•˜๋ฉด Google Play์— ๋“ฑ๋ก๋„ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค (API 28+ ์ด์ƒ).


2. Certificate Pinning (๊ณต๊ฐœํ‚ค ๊ณ ์ •) – ์„ ํƒ์  ๊ฐ•ํ™”

  • ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ ๋˜๋Š” ๊ณต๊ฐœํ‚ค๋ฅผ ์•ฑ์— ์ €์žฅํ•ด์„œ, ์ค‘๊ฐ„์ž(MITM) ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ธฐ์ˆ .
  • ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ต์‹  ์ค‘ ๊ณต๊ฒฉ์ž๊ฐ€ ์ž์‹ ๋งŒ์˜ ์ธ์ฆ์„œ๋ฅผ ๊ปด๋„ฃ์–ด ์ค‘๊ฐ„์— ๋‚š์•„์ฑ„๋Š” ๊ฑธ ๋ง‰๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋จ.
  • ๊ตฌํ˜„ ๋ฐฉ๋ฒ•:
    • OkHttp, Retrofit ๋“ฑ์—์„œ ํ•€ ๊ณ ์ • ๊ฐ€๋Šฅ
    • ์˜ˆ: okhttp3.CertificatePinner
 
CertificatePinnercertificatePinner=newCertificatePinner.Builder() .add("api.example.com", "sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") .build(); OkHttpClientclient=newOkHttpClient.Builder() .certificatePinner(certificatePinner) .build();

๐Ÿ“Œ ๋‹จ์ ์€ ์„œ๋ฒ„ ์ธ์ฆ์„œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์•ฑ๋„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ.


3. JWT ๋˜๋Š” ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์‚ฌ์šฉ

  • ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ๋Š” ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๋งŒ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋ฒ„์— ์ธ์ฆ ๋กœ์ง์„ ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ธ์ฆ ๋ฐฉ์‹ ์˜ˆ:
    • OAuth2 + JWT
    • Firebase Auth
    • ์ž์ฒด ๋กœ๊ทธ์ธ + ์„ธ์…˜/ํ† ํฐ
[์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ] → [ํ† ํฐ ๋ฐœ๊ธ‰] → [์•ฑ ์ €์žฅ] → [API ์š”์ฒญ ์‹œ ํ† ํฐ ์ฒจ๋ถ€]

4. ์„œ๋ฒ„ ์‚ฌ์ด๋“œ Rate Limiting / Abuse Detection

  • ๋ˆ„๊ฐ€ ์„œ๋ฒ„์— API ํ‚ค๋ฅผ ๋นผ๊ฐ€๋”๋ผ๋„, ๋„ˆ๋ฌด ์ž์ฃผ ์š”์ฒญํ•˜๋ฉด ์ฐจ๋‹จ๋˜๊ฒŒ ์„ค์ •
  • ์˜ˆ:
    • IP ๋‹จ์œ„ ์ œํ•œ
    • ์‚ฌ์šฉ์ž ํ† ํฐ ๋‹จ์œ„ ์ œํ•œ
    • Cloudflare / AWS WAF ๊ฐ™์€ ๋ณด์•ˆ ์„œ๋น„์Šค ์‚ฌ์šฉ

5. ๋กœ๊ทธ/๋””๋ฒ„๊น… ์‹œ ํ‚ค ๋…ธ์ถœ ์ฃผ์˜

  • ์„œ๋ฒ„ ๋กœ๊ทธ, ์•ฑ ๋กœ๊ทธ, ํฌ๋ž˜์‹œ ๋ฆฌํฌํŠธ์— ํ‚ค๋‚˜ ๋ฏผ๊ฐ ์ •๋ณด๊ฐ€ ์ฐํžˆ์ง€ ์•Š๊ฒŒ ํ•„ํ„ฐ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ” ์•ˆ์ „ํ•œ ํ†ต์‹  ํ๋ฆ„ ์˜ˆ์‹œ

 
[๐Ÿ“ฑ ์•ฑ] โ‡… HTTPS [๐ŸŒ ๋‚ด ์„œ๋ฒ„ (API ํ‚ค ๋ณด์œ )] โ‡… HTTPS [๐Ÿ’ป ์™ธ๋ถ€ API ์„œ๋ฒ„ (์˜ˆ: OpenAI, Stripe ๋“ฑ)]
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์˜ค์ง ๋‚ด ์„œ๋ฒ„์™€๋งŒ ์•ˆ์ „ํ•˜๊ฒŒ ํ†ต์‹ 
  • API ํ‚ค๋Š” ์™ธ๋ถ€์— ์ ˆ๋Œ€ ๋…ธ์ถœ๋˜์ง€ ์•Š์Œ
  • ํ†ต์‹ ์€ HTTPS + ์ธ์ฆ + (Certificate Pinning)์œผ๋กœ ๋ณดํ˜ธ๋จ

โœ… ๊ฒฐ๋ก 

"์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๋ฐ›์•„๋„, ๊ทธ ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ์ด ์•ˆ์ „ํ•ด์•ผ ์ง„์งœ ๋ณด์•ˆ์ด๋‹ค."

  • HTTPS๋Š” ๊ธฐ๋ณธ ์ค‘ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค.
  • ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด Certificate Pinning ๊ณ ๋ ค
  • ์‚ฌ์šฉ์ž ์ธ์ฆ & ์š”์ฒญ ์ œํ•œ์œผ๋กœ ์ถ”๊ฐ€ ๋ฐฉ์–ด
  • ์•ˆ์ „ํ•œ ์„œ๋ฒ„ ๊ตฌ์„ฑ ์—†์ด๋Š” API ํ‚ค ์ˆจ๊ธฐ๋Š” ๊ฒƒ๋„ ๋ฌด์˜๋ฏธ

----

 

โœ… API ํ‚ค ๋ณดํ˜ธ ๋ฐฉ๋ฒ• & ํ†ต์‹  ๋ณด์•ˆ ์ „๋žต – ์žฅ๋‹จ์  ์š”์•ฝํ‘œ

๋ฐฉ๋ฒ•์„ค๋ช…์žฅ์ ๋‹จ์ ๋ณด์•ˆ ์ˆ˜์ค€
1. ์•ฑ ๋‚ด ํ•˜๋“œ์ฝ”๋”ฉ (Java/Kotlin) ํ‚ค๋ฅผ ์ฝ”๋“œ์— ์ง์ ‘ ๋„ฃ์Œ ๊ตฌํ˜„ ๊ฐ€์žฅ ์‰ฌ์›€ APK ๋””์ปดํŒŒ์ผ๋กœ ๋ฐ”๋กœ ๋…ธ์ถœ ๐Ÿ”ด ๋งค์šฐ ๋‚ฎ์Œ
2. JNI/NDK (C/C++๋กœ ํ‚ค ์ˆจ๊น€) ํ‚ค๋ฅผ Native ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋„ฃ์Œ Java๋ณด๋‹จ ์ถ”์ถœ ์–ด๋ ต๋‹ค ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง ๊ฐ€๋Šฅ ๐ŸŸ  ๋‚ฎ์Œ~์ค‘๊ฐ„
3. ์•ฑ → ์„œ๋ฒ„ → ์™ธ๋ถ€ API (ํ”„๋ก์‹œ ์„œ๋ฒ„) ํ‚ค๋Š” ์„œ๋ฒ„์—์„œ๋งŒ ์‚ฌ์šฉ, ์•ฑ์€ ํ‚ค ๋ชฐ๋ผ๋„ ๋จ ํ‚ค ์™„์ „ ์ˆจ๊น€, ํ‚ค ๋ณ€๊ฒฝ๋„ ์‰ฌ์›€ ์„œ๋ฒ„ ์šด์˜ ํ•„์š” ๐ŸŸข ๋†’์Œ
4. Firebase Remote Config / Secure Key Delivery ์•ฑ ์‹คํ–‰ ์‹œ ์„œ๋ฒ„์—์„œ ํ‚ค ๋ฐ›์•„์˜ด ํ‚ค ๋ณ€๊ฒฝ ์‰ฌ์›€, ์ฝ”๋“œ์— ์—†์Œ ์—ฌ์ „ํžˆ ์•ฑ์—์„œ ์ˆ˜์‹  → ๋…ธ์ถœ ๊ฐ€๋Šฅ ๐ŸŸก ์ค‘๊ฐ„
5. HTTPS (SSL/TLS) ํ†ต์‹  ์„œ๋ฒ„์™€์˜ ๊ธฐ๋ณธ์ ์ธ ์•ˆ์ „ ํ†ต์‹  ๊ธฐ๋ณธ ๋ณดํ˜ธ ์ œ๊ณต, ํ•„์š”์กฐ๊ฑด ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ์—๋Š” ์ทจ์•ฝ (MITM ๊ฐ€๋Šฅ์„ฑ) ๐ŸŸข ๋†’์Œ (๊ธฐ๋ณธ)
6. Certificate Pinning ์•ฑ์— ์„œ๋ฒ„ ์ธ์ฆ์„œ ํ•€ ์ €์žฅ MITM ๊ณต๊ฒฉ ๋ฐฉ์–ด ์ธ์ฆ์„œ ๋ณ€๊ฒฝ ์‹œ ์•ฑ๋„ ์žฌ๋ฐฐํฌ ๐ŸŸข ๋งค์šฐ ๋†’์Œ
7. ์‚ฌ์šฉ์ž ์ธ์ฆ + JWT / OAuth ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž๋งŒ ์š”์ฒญ ๊ฐ€๋Šฅ ์‚ฌ์šฉ์ž๋ณ„ ์š”์ฒญ ํ†ต์ œ, ์ถ”๊ฐ€ ๋ณด์•ˆ ์ธ์ฆ ๋กœ์ง ์ถ”๊ฐ€ ํ•„์š” ๐ŸŸข ๋†’์Œ
8. Rate Limiting / Abuse Detection ์„œ๋ฒ„์—์„œ ์ด์ƒ ์š”์ฒญ ์ฐจ๋‹จ ๋น„์ •์ƒ ์ ‘๊ทผ ์ œํ•œ ๊ฐ€๋Šฅ ์ •์ƒ ์‚ฌ์šฉ์ž์—๊ฒŒ๋„ ์ œํ•œ๋  ์ˆ˜ ์žˆ์Œ ๐ŸŸข ๋ณด์กฐ ์ˆ˜๋‹จ
 

๐Ÿ“Œ ์ถ”์ฒœ ์กฐํ•ฉ (์‹ค์ œ ์•ฑ ๊ธฐ์ค€)

์š”์†Œ์ถ”์ฒœ ์กฐํ•ฉ
API ํ‚ค ์œ„์น˜ ์„œ๋ฒ„์—์„œ๋งŒ ๋ณด๊ด€ (ํด๋ผ์ด์–ธํŠธ๋Š” ๋ชฐ๋ผ๋„ ๋จ)
ํด๋ผ์ด์–ธํŠธ ↔ ์„œ๋ฒ„ ํ†ต์‹  HTTPS + ์ธ์ฆ ํ† ํฐ
๋ณด์•ˆ ๊ฐ•ํ™” Certificate Pinning + JWT ์ธ์ฆ + Rate Limiting
ํด๋ผ์ด์–ธํŠธ ๋ณดํ˜ธ ์•ฑ ์ฝ”๋“œ ๋‚œ๋…ํ™” + NDK ์‚ฌ์šฉ (์ถ”๊ฐ€ ๋ณด์•ˆ ์ˆ˜๋‹จ)
 

๐Ÿ” ์š”์•ฝ ์ •๋ฆฌ

  • ๊ฐ€์žฅ ์•ˆ์ „ํ•œ ๋ฐฉ์‹์€:
    ๐Ÿ‘‰ ์•ฑ์—๋Š” ํ‚ค๋ฅผ ์ ˆ๋Œ€ ๋„ฃ์ง€ ์•Š๊ณ , ํ‚ค๋Š” ์„œ๋ฒ„์—์„œ๋งŒ ๋ณด๊ด€ & ์‚ฌ์šฉ.
    ๐Ÿ‘‰ HTTPS + ์ธ์ฆ + ํ•€ ๊ณ ์ • ๋“ฑ์œผ๋กœ ํ†ต์‹ ๋„ ๋ณดํ˜ธ.
  • JNI/NDK, ๋‚œ๋…ํ™”๋Š” ์™„๋ฒฝํ•œ ๋ณด์•ˆ์ด ์•„๋‹Œ ๋ณด์กฐ ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค.
  • ์ง„์งœ ์ค‘์š”ํ•œ ๊ฑด API ํ‚ค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์—†์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ฐ˜์‘ํ˜•