์ผ์
[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 ํค๊ฐ ํด๋ผ์ด์ธํธ์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
๋ฐ์ํ