Güvenli API Anahtarları oluşturmak için en iyi yöntemler

Hepimiz API'lerin ne kadar değerli olduğunu biliyoruz. Diğer hizmetleri keşfetmenin, onlarla bütünleşmenin ve mükemmel çözümler daha hızlı oluşturmanın kapısıdır.

Başka geliştiricilerin kullanması için API oluşturmayı veya oluşturmayı düşünüyor olabilirsiniz. Bir API, döndürdüğü verilere yetkili erişim sağlamak için bir tür kimlik doğrulaması gerektirir.

Bugün API Anahtarları, OAuth, JWT, vb. Gibi birkaç onaylama standardı vardır.

Bu makalede, API'lere erişmek için API Anahtarlarının doğru şekilde nasıl yönetileceğini inceleyeceğiz.

Peki neden API Anahtarları?

API Anahtarlarının kullanımı kolaydır, kısa, statiktir ve iptal edilmedikçe süresi dolmaz. Birden fazla hizmetin iletişim kurması için kolay bir yol sağlarlar.

Müşterilerinizin tüketmesi için bir API sağlarsanız, doğru şekilde oluşturmanız çok önemlidir.

Başlayalım ve API Anahtarlarını doğru şekilde nasıl oluşturacağınızı size göstereceğim.

API Anahtar Üretimi

API anahtarının kendisi, uygulamayı veya kullanıcıyı tanımlayan bir kimlik olduğundan, benzersiz, rastgele ve tahmin edilemez olması gerekir. Oluşturulan API anahtarlarının Alphanumeric ve özel karakterleri de kullanması gerekir. Böyle bir API anahtarının bir örneği zaCELgL.0imfnc8mVLWwsAawjYr4Rx-Af50DDqtlx'dir.

Güvenli API Anahtarı Depolama

API anahtarı verilere doğrudan erişim sağladığından, bir web veya mobil uygulama kullanıcısının aynı veriye erişmek için sağladığı bir şifre gibidir.

Bunu düşün. API anahtarlarını saklamamızın gerekliliği, istekte bulunan API anahtarının geçerli ve bizim tarafımızdan (şifre gibi) yayınlandığından emin olmaktır.

Ham API anahtarını bilmemize gerek yoktur, ancak yalnızca anahtarın doğru olduğunu doğrulamamız gerekir. Bu nedenle, anahtarı düz metin (kötü) olarak saklamak veya şifrelemek yerine, veritabanımızın içinde karma bir değer olarak saklamalıyız.

Özetlenmiş bir değer, birileri veritabanımıza yetkisiz erişim sağlasa bile, hiçbir API anahtarının sızdırılmadığı ve hepsinin güvenli olduğu anlamına gelir. Son kullanıcı her API isteğinde ham API anahtarını gönderir ve isteğinde API anahtarını ekleyerek doğrulayabilir ve karma anahtarını veritabanımızda saklanan karma ile karşılaştırabiliriz. İşte Java'da bunun kaba bir uygulaması:

Yukarıdaki kodda, birincil anahtar, önek ve {prefix}. {Hash_of_whole_api_key} API anahtarının karma değerlerinin bir birleşimi olacaktır.

Ama bekle, dahası var. Özetlenmiş bir değerin saklanması, belirli kullanılabilirlik problemleri getirir. Şimdi bunları ele alalım.

API Anahtarını kullanıcılara sunmak

Orijinal API anahtarını saklamadığımız için, oluşturma sırasında kullanıcıya yalnızca bir kez gösterebiliriz. Bu nedenle, kullanıcıları tekrar alınamayacakları konusunda uyardığınızdan emin olun ve API anahtarını kopyalamayı ve güvenli bir şekilde saklamayı unuturlarsa, yeni bir simge oluşturmaları gerekir. Böyle bir şey yapabilirsiniz:

Uyarı mesajı ile oluşturulan API Anahtarını görüntüleme

Kullanıcılar daha sonra oluşturulan bir API Anahtarını nasıl tanımlayabilir?

Diğer bir sorun, kullanıcıların düzenlemeleri veya iptal etmeleri gerekiyorsa konsolunuzdaki doğru API anahtarını nasıl tanımlamalarıdır. Bu, API anahtarına bir ön ek eklenerek çözülebilir. Resimdeki, noktayla ayrılmış ilk 7 karakterin (bizim ön ekimiz) dikkat edin.

Artık bu öneki veritabanında saklayabilir ve konsolda görüntüleyerek kullanıcıların doğru API anahtarı girişini hızlıca tanımlayabilmelerini sağlayabilirsiniz:

API Anahtar yönetim konsolu

API Anahtarına tüm gücü vermeyin

API anahtarı sağlayıcılarının yaptığı genel hatalardan biri, yönetilmesi kolay olduğundan her şeye erişmek için bir anahtar sağlamaktır. Yapma bunu. Bir kullanıcının yalnızca bir e-posta okuması gerektiğini ve bir API anahtarı oluşturduğunu varsayalım. Ancak, bu anahtar şimdi veritabanındaki kayıtları silmek de dahil olmak üzere diğer hizmetlere tam erişime sahiptir.

Doğru yaklaşım, son kullanıcıların API Anahtarı erişimini uygun şekilde kısıtlamasına ve bir API anahtarının gerçekleştirebileceği belirli eylemleri seçmesine izin vermektir. Bu, her kapsamın belirli bir izni temsil ettiği kapsamlar sağlayarak yapılabilir.

Örneğin,

  • sadece e-posta göndermek için bir API anahtarına ihtiyacınız varsa, “email.send” olarak adlandırılan bir API anahtarı oluşturabilirsiniz.
  • Son kullanıcının birden fazla sunucusu varsa ve her biri belirli bir eylem gerçekleştiriyorsa, belirli bir kapsamda ayrı bir API anahtarı oluşturulabilir.

Bu yüzden, API anahtarını oluştururken, kullanıcıların aşağıdaki resimde olduğu gibi, bu API anahtarının hangi erişime sahip olacağını seçmelerine izin verin.

Bu şekilde kullanıcılar, daha iyi güvenlik için her biri belirli erişim kurallarına sahip olan birden fazla API anahtarı oluşturabilir. Bir API isteği alındığında, API Anahtarının söz konusu API'ye erişmek için doğru kapsamı olup olmadığını kontrol edebilirsiniz. Şimdi veritabanı şöyle bir şeye benziyor:

API Anahtar veritabanı varlığı

Sınırlayıcı API anahtarlarını derecelendirme

Evet, bunu zaten biliyor olabilirsiniz, ancak hiçbir kötü oyuncunun API sunucularınızı devredemeyeceği veya diğer müşterilerinizi etkileyen performans sorunlarına neden olamayacağından emin olmak için belirli API Anahtarlarıyla yapılan limit taleplerini derecelendirmek önemlidir. Uygun bir fiyat sınırlama ve izleme çözümü olması API hizmetini sağlıklı tutar.

Sonuç

API anahtarları doğru yapıldığında, başka bir sunucuyla iletişim kurmanın hala mükemmel bir yoludur. Bu makalede incelediğimiz gibi, bazı uygulamaları takip etmek hem API tüketicilerine hem de API sağlayıcılarına faydalar sunar. Umarım bu size yardımcı olur.

API'lerinizi Güvenli Hale Getirmek Mutlu!