Whitelist IP untuk Kunci API

Burung

19 Agu 2015

Email

1 min read

Whitelist IP untuk Kunci API

Intisari Utama

    • API keys adalah kredensial yang kuat — jika dikompromikan, penyerang dapat mengirim email, mencuri data, atau menyamar sebagai merek Anda.

    • Brute-forcing kunci hex 40 karakter pada dasarnya tidak mungkin; ancaman nyata datang dari paparan (serangan MITM, repositori kode yang tidak aman, kredensial bocor).

    • Selalu gunakan HTTPS dan validasi sertifikat SSL untuk mencegah penyadapan kunci API Anda.

    • IP whitelisting menambahkan lapisan perlindungan penting dengan membatasi penggunaan kunci pada IP atau rentang IP tertentu.

    • Bahkan jika penyerang mencuri kunci API Anda, mereka tidak dapat menggunakannya kecuali mereka terhubung dari IP yang disetujui.

    • Dukungan CIDR memudahkan untuk mengotorisasi seluruh jaringan tanpa mencantumkan setiap server.

    • Hindari menyematkan kunci API dalam kode — gunakan variabel lingkungan atau solusi manajemen rahasia yang aman sebagai gantinya.

    • Buat beberapa kunci API dengan ruang lingkup sempit daripada satu kunci “do-everything” — masing-masing dengan izin terbatas dan whitelist-nya sendiri.

    • Untuk integrasi pihak ketiga, buat kunci khusus dengan izin terbatas dan IP yang dibatasi.

    • Aktifkan 2FA pada akun Anda karena kunci API hanya dapat dibuat melalui UI.

    • Tinjau secara berkala, putar, dan pensiunkan kunci untuk menjaga keamanan operasional yang kuat.

Sorotan Q&A

  • Apa itu IP whitelisting?

    Ini adalah fitur keamanan yang membatasi penggunaan API key untuk alamat IP tertentu atau rentang IP.

  • Mengapa SparkPost/Bird menggunakan API keys untuk autentikasi?

    Kunci API itu sederhana, banyak diadopsi, dan bekerja dengan baik dengan REST API dan SMTP.

  • Apa yang terjadi jika seseorang mencuri kunci API saya?

    Mereka dapat mengirim email atas nama Anda, mengunduh daftar penerima, memodifikasi template, atau mengirim phishing/spam yang merusak merek Anda.

  • Bisakah kunci API di-brute-force?

    Hampir tidak mungkin. Sebuah string heksadesimal 40 karakter memiliki ~1.46e48 kombinasi — metode brute force akan memakan waktu lebih lama daripada usia alam semesta.

  • Jadi bagaimana para penyerang biasanya mendapatkan API keys?

    Serangan man-in-the-middle (jika SSL tidak diverifikasi), kunci diekspos di repositori GitHub publik, atau log secara tidak sengaja membocorkan kunci.

  • Bagaimana IP whitelisting membantu?

    Bahkan jika seorang penyerang mencuri kunci Anda, itu tidak akan berfungsi kecuali mereka terhubung dari IP yang disetujui.

  • Bisakah saya memasukkan seluruh jaringan ke daftar putih?

    Ya, melalui notasi CIDR — ideal untuk server yang load-balanced, VPN, atau rentang kantor statis.

  • Apakah whitelisting berlaku untuk REST dan SMTP?

    Ya, IP permintaan masuk harus cocok dengan daftar putih Anda.

  • Berapa banyak IP atau rentang yang dapat saya whitelist?

    Sebanyak yang Anda butuhkan — beberapa IP individu atau blok.

  • Haruskah saya menggunakan satu API key untuk semuanya?

    Tidak. Buat kunci terpisah untuk sistem, tim, atau vendor yang berbeda. Ini meningkatkan keamanan dan mempermudah perputaran atau pencabutan kunci.

  • Di mana sebaiknya saya menyimpan API keys?

    Gunakan variabel lingkungan — jangan pernah memasukkan kunci langsung ke dalam file sumber atau repositori publik.

  • Ada praktik terbaik keamanan tambahan?

    Selalu aktifkan 2FA pada akun SparkPost/Bird Anda dan buat kunci khusus untuk pihak ketiga dengan izin minimal dan daftar putih mereka sendiri.

Ada banyak cara untuk membangun autentikasi dalam produk API-first seperti SparkPost, dan yang kami pilih sejak awal adalah penggunaan API keys. Menyuntikkan API key Anda sebagai header Authorization mentah atau melalui HTTP Basic Auth standar membuatnya sangat mudah untuk menggunakan API kami. API keys seperti ini adalah standar umum untuk webservices, tetapi seberapa amankah sistem ini?

Ada banyak cara untuk membangun autentikasi dalam produk API-first seperti SparkPost, dan yang kami pilih sejak awal adalah penggunaan API keys. Menyuntikkan API key Anda sebagai header Authorization mentah atau melalui HTTP Basic Auth standar membuatnya sangat mudah untuk menggunakan API kami. API keys seperti ini adalah standar umum untuk webservices, tetapi seberapa amankah sistem ini?

Ada banyak cara untuk membangun autentikasi dalam produk API-first seperti SparkPost, dan yang kami pilih sejak awal adalah penggunaan API keys. Menyuntikkan API key Anda sebagai header Authorization mentah atau melalui HTTP Basic Auth standar membuatnya sangat mudah untuk menggunakan API kami. API keys seperti ini adalah standar umum untuk webservices, tetapi seberapa amankah sistem ini?

Risiko

Ketika menggunakan layanan web apa pun, jika seorang penyerang mendapatkan kunci API Anda, mereka dapat bertindak atas nama Anda, dan melakukan hal-hal seperti (dalam kasus kami):

  • mengirim email mereka secara gratis melalui akun Anda

  • mengunduh daftar penerima Anda dan memberikan kepada spammer (jika mereka bukan spammer itu sendiri)

  • mengedit template Anda untuk menyuntikkan tautan phishing

  • mengirim spam atau phishing atas nama Anda

Salah satu dari hasil ini bisa sangat merusak reputasi Anda dan bisnis Anda, dan dalam kasus phishing, berpotensi merusak langsung pengguna akhir Anda.  Inilah mengapa sangat penting memastikan tidak ada yang dapat menemukan kunci API Anda.

Ketika menggunakan layanan web apa pun, jika seorang penyerang mendapatkan kunci API Anda, mereka dapat bertindak atas nama Anda, dan melakukan hal-hal seperti (dalam kasus kami):

  • mengirim email mereka secara gratis melalui akun Anda

  • mengunduh daftar penerima Anda dan memberikan kepada spammer (jika mereka bukan spammer itu sendiri)

  • mengedit template Anda untuk menyuntikkan tautan phishing

  • mengirim spam atau phishing atas nama Anda

Salah satu dari hasil ini bisa sangat merusak reputasi Anda dan bisnis Anda, dan dalam kasus phishing, berpotensi merusak langsung pengguna akhir Anda.  Inilah mengapa sangat penting memastikan tidak ada yang dapat menemukan kunci API Anda.

Ketika menggunakan layanan web apa pun, jika seorang penyerang mendapatkan kunci API Anda, mereka dapat bertindak atas nama Anda, dan melakukan hal-hal seperti (dalam kasus kami):

  • mengirim email mereka secara gratis melalui akun Anda

  • mengunduh daftar penerima Anda dan memberikan kepada spammer (jika mereka bukan spammer itu sendiri)

  • mengedit template Anda untuk menyuntikkan tautan phishing

  • mengirim spam atau phishing atas nama Anda

Salah satu dari hasil ini bisa sangat merusak reputasi Anda dan bisnis Anda, dan dalam kasus phishing, berpotensi merusak langsung pengguna akhir Anda.  Inilah mengapa sangat penting memastikan tidak ada yang dapat menemukan kunci API Anda.

Peluang

Apakah saya mendengar bruteforce? Kunci API kami dihasilkan secara acak berupa string heksadesimal sepanjang 40 karakter. Ini menghasilkan total 1.4615e+48 kunci API. Jika semua 3 miliar komputer dan smartphone di dunia mencoba 100 kunci api per detik, dengan asumsi bahwa server kami mengizinkan itu, mencoba semua kemungkinan kunci API akan memakan waktu lebih dari 150.000.000.000.000.000.000.000.000.000 tahun. Jadi memaksa kunci API secara brute force tidak masuk akal.

Jadi bagaimana seseorang dapat menemukan kunci API Anda? Karena kunci tersebut dikirimkan sebagai header, kunci tersebut dapat dibaca dengan serangan man-in-the-middle, jadi Anda harus selalu memastikan bahwa klien Anda memeriksa sertifikat SSL saat terhubung ke API kami (ini adalah alasan utama mengapa kami mengharuskan https untuk koneksi API). Juga, jika Anda ceroboh dalam penggunaan repositori kode publik seperti github, kunci API Anda dapat dengan mudah terekspos di dunia luar. Ini bukanlah masalah akademis: ada bot yang dikenal menjelajah github untuk mencari kunci API, dan telah ada serangan yang berhasil melalui vektor itu.

Apakah saya mendengar bruteforce? Kunci API kami dihasilkan secara acak berupa string heksadesimal sepanjang 40 karakter. Ini menghasilkan total 1.4615e+48 kunci API. Jika semua 3 miliar komputer dan smartphone di dunia mencoba 100 kunci api per detik, dengan asumsi bahwa server kami mengizinkan itu, mencoba semua kemungkinan kunci API akan memakan waktu lebih dari 150.000.000.000.000.000.000.000.000.000 tahun. Jadi memaksa kunci API secara brute force tidak masuk akal.

Jadi bagaimana seseorang dapat menemukan kunci API Anda? Karena kunci tersebut dikirimkan sebagai header, kunci tersebut dapat dibaca dengan serangan man-in-the-middle, jadi Anda harus selalu memastikan bahwa klien Anda memeriksa sertifikat SSL saat terhubung ke API kami (ini adalah alasan utama mengapa kami mengharuskan https untuk koneksi API). Juga, jika Anda ceroboh dalam penggunaan repositori kode publik seperti github, kunci API Anda dapat dengan mudah terekspos di dunia luar. Ini bukanlah masalah akademis: ada bot yang dikenal menjelajah github untuk mencari kunci API, dan telah ada serangan yang berhasil melalui vektor itu.

Apakah saya mendengar bruteforce? Kunci API kami dihasilkan secara acak berupa string heksadesimal sepanjang 40 karakter. Ini menghasilkan total 1.4615e+48 kunci API. Jika semua 3 miliar komputer dan smartphone di dunia mencoba 100 kunci api per detik, dengan asumsi bahwa server kami mengizinkan itu, mencoba semua kemungkinan kunci API akan memakan waktu lebih dari 150.000.000.000.000.000.000.000.000.000 tahun. Jadi memaksa kunci API secara brute force tidak masuk akal.

Jadi bagaimana seseorang dapat menemukan kunci API Anda? Karena kunci tersebut dikirimkan sebagai header, kunci tersebut dapat dibaca dengan serangan man-in-the-middle, jadi Anda harus selalu memastikan bahwa klien Anda memeriksa sertifikat SSL saat terhubung ke API kami (ini adalah alasan utama mengapa kami mengharuskan https untuk koneksi API). Juga, jika Anda ceroboh dalam penggunaan repositori kode publik seperti github, kunci API Anda dapat dengan mudah terekspos di dunia luar. Ini bukanlah masalah akademis: ada bot yang dikenal menjelajah github untuk mencari kunci API, dan telah ada serangan yang berhasil melalui vektor itu.

IP whitelisting sebagai penyelamat

Ketika Anda membuat kunci API, Anda sekarang dapat menentukan daftar IP yang diotorisasi untuk menggunakan kunci ini. Anda dapat menentukan beberapa IP, serta blok IP, menggunakan notasi CIDR, sehingga Anda tidak perlu mencantumkan server Anda satu per satu. Ketika kunci API digunakan, baik untuk REST API atau SMTP, kami akan mencocokkan IP yang terhubung dengan daftar ini untuk mengizinkan atau menolak akses.

Dengan fitur ini, bahkan jika kunci API Anda ditemukan atau dicuri, hanya server Anda yang akan dapat menggunakannya. Mengingat risikonya dan betapa mudahnya menyiapkannya, kami sangat merekomendasikan semua pelanggan kami untuk menggunakan fitur ini.

Ketika Anda membuat kunci API, Anda sekarang dapat menentukan daftar IP yang diotorisasi untuk menggunakan kunci ini. Anda dapat menentukan beberapa IP, serta blok IP, menggunakan notasi CIDR, sehingga Anda tidak perlu mencantumkan server Anda satu per satu. Ketika kunci API digunakan, baik untuk REST API atau SMTP, kami akan mencocokkan IP yang terhubung dengan daftar ini untuk mengizinkan atau menolak akses.

Dengan fitur ini, bahkan jika kunci API Anda ditemukan atau dicuri, hanya server Anda yang akan dapat menggunakannya. Mengingat risikonya dan betapa mudahnya menyiapkannya, kami sangat merekomendasikan semua pelanggan kami untuk menggunakan fitur ini.

Ketika Anda membuat kunci API, Anda sekarang dapat menentukan daftar IP yang diotorisasi untuk menggunakan kunci ini. Anda dapat menentukan beberapa IP, serta blok IP, menggunakan notasi CIDR, sehingga Anda tidak perlu mencantumkan server Anda satu per satu. Ketika kunci API digunakan, baik untuk REST API atau SMTP, kami akan mencocokkan IP yang terhubung dengan daftar ini untuk mengizinkan atau menolak akses.

Dengan fitur ini, bahkan jika kunci API Anda ditemukan atau dicuri, hanya server Anda yang akan dapat menggunakannya. Mengingat risikonya dan betapa mudahnya menyiapkannya, kami sangat merekomendasikan semua pelanggan kami untuk menggunakan fitur ini.

Kata-kata terakhir

Beberapa rekomendasi pribadi seputar keamanan:

  • Jangan simpan kunci API Anda di dalam kode. Ada banyak manfaat dalam menyimpannya sebagai variabel lingkungan, seperti yang dilakukan Heroku

  • Anda dapat membuat jumlah kunci API yang tidak terbatas, dan untuk keamanan terbaik adalah membagi tanggung jawab di antara beberapa kunci API, daripada hanya satu kunci serbaguna. Ini juga akan memungkinkan Anda memiliki daftar putih IP yang berbeda per kunci, untuk pemisahan tugas yang lebih baik

  • Jika Anda bekerja dengan pihak ketiga, jangan berbagi kunci API Anda tetapi buat yang baru untuk mereka, dengan hanya izin yang dibutuhkan, dan terhubung dengan IP mereka

  • Karena kunci API hanya dapat dibuat melalui UI, mengaktifkan otentikasi 2-faktor pada akun SparkPost Anda sangat penting dan hanya memerlukan waktu 2 menit

Beberapa rekomendasi pribadi seputar keamanan:

  • Jangan simpan kunci API Anda di dalam kode. Ada banyak manfaat dalam menyimpannya sebagai variabel lingkungan, seperti yang dilakukan Heroku

  • Anda dapat membuat jumlah kunci API yang tidak terbatas, dan untuk keamanan terbaik adalah membagi tanggung jawab di antara beberapa kunci API, daripada hanya satu kunci serbaguna. Ini juga akan memungkinkan Anda memiliki daftar putih IP yang berbeda per kunci, untuk pemisahan tugas yang lebih baik

  • Jika Anda bekerja dengan pihak ketiga, jangan berbagi kunci API Anda tetapi buat yang baru untuk mereka, dengan hanya izin yang dibutuhkan, dan terhubung dengan IP mereka

  • Karena kunci API hanya dapat dibuat melalui UI, mengaktifkan otentikasi 2-faktor pada akun SparkPost Anda sangat penting dan hanya memerlukan waktu 2 menit

Beberapa rekomendasi pribadi seputar keamanan:

  • Jangan simpan kunci API Anda di dalam kode. Ada banyak manfaat dalam menyimpannya sebagai variabel lingkungan, seperti yang dilakukan Heroku

  • Anda dapat membuat jumlah kunci API yang tidak terbatas, dan untuk keamanan terbaik adalah membagi tanggung jawab di antara beberapa kunci API, daripada hanya satu kunci serbaguna. Ini juga akan memungkinkan Anda memiliki daftar putih IP yang berbeda per kunci, untuk pemisahan tugas yang lebih baik

  • Jika Anda bekerja dengan pihak ketiga, jangan berbagi kunci API Anda tetapi buat yang baru untuk mereka, dengan hanya izin yang dibutuhkan, dan terhubung dengan IP mereka

  • Karena kunci API hanya dapat dibuat melalui UI, mengaktifkan otentikasi 2-faktor pada akun SparkPost Anda sangat penting dan hanya memerlukan waktu 2 menit

Berita lainnya

Baca lebih lanjut dari kategori ini

A person is standing at a desk while typing on a laptop.

Platform AI-native lengkap yang berkembang bersama bisnis Anda.

© 2025 Bird

A person is standing at a desk while typing on a laptop.

Platform AI-native lengkap yang berkembang bersama bisnis Anda.

© 2025 Bird