Yazılımınızın dağılımı gerçekten sorunun dönüm noktası olduğunu. Ya bir API sunucusuna erişmek için çalışmak gibi kullanıcı adları ve şifreleri karma ve yazılım saklayarak, un-karma değerlerini saklamak daha bir daha kullanışlı değildir. Eğer kullanıcılar için kullanıcı adlarını ve şifreleri uygulamak için gidiyoruz, ben size yazılımın kendisi değerleri kaydetmeden API kontrolü için bir ön-imleç olarak kullanmayın düşünüyorum. Bana iki parça bu tarif edelim.
Request Signatures
API isteği doğrulama için kullanımı en yaygın yöntemdir request signatures. A bir API sunucusuna gönderilmeden önce, temelde, isteğe parametreler sıralanır ve benzersiz bir anahtar karışıma ilave edilir. Sürü daha sonra isteğe ek olarak bir karma üretmek için kullanılır. Örneğin:
public static function generateRequestString(array $params, $secretKey)
{
$params['signature'] = self::generateSignature($params, $secretKey);
return http_build_query($params,'','&');
}
public static function generateSignature($secretKey, array $params)
{
$reqString = $secretKey;
ksort($params);
foreach($params as $k => $v)
{
$reqString .= $k . $v;
}
return md5($reqString);
}
Siz sadece göndermek istediği tüm parametrelerin bir dizi generateRequestString()
yöntemini çağırarak yukarıdaki kodu kullanarak bir API isteği sorgu dizesi oluşturmak olabilir. Gizli anahtar API her kullanıcıya benzersiz sağlanır şeydir. Genellikle imza ile birlikte API sunucusuna kullanıcı kimliği geçmek ve API sunucu yerel veritabanından gizli anahtarı almak ve bunu inşa aynı şekilde isteği doğrulamak için id kullanır. Anahtar ve kullanıcı kimliği doğru olduğunu varsayarak, bu kullanıcı doğru imzayı oluşturmak mümkün tek olmalıdır. Anahtar API isteğinde geçti hiç unutmayın.
Ne yazık ki, bu masaüstü uygulaması için bir sorundur eşsiz bir anahtar var her kullanıcı gerektirir. Hangi iki adıma beni açar.
Temporal Keys
Yani decompiled olabilir çünkü uygulama ile anahtarlarını dağıtmak değil, ve tuşları çıkmak istiyorum. Eğer çok kısa ömürlü tuşları yapabilir,-hareket karşı.
Eğer kendi kullanıcı adı ve şifresi için kullanıcılar ister masaüstü uygulaması bir kısmını uyguladık varsayılarak, uygulama sunucusu bir kimlik doğrulama isteği gerçekleştirmek olabilir. Başarılı bir kimlik üzerinde, masaüstü uygulaması daha sonra yetkili oturumu ömrü boyunca saklamak yanıt ile bir geçici anahtarı dönebileceğini ve API istekleri için kullanın. Eğer SSL, bu initial authentication is the most vulnerable part kullanamazsınız sözü, çünkü bazı kısıtlamalarla yaşamak zorunda.
Önerilen makale Andy E iyi bir yaklaşım (ben o kadar oy) olduğunu. Temelde doğrulamak için kullanılabilecek bir kısa ömürlü anahtar kurmak için bir el sıkışma. Aynı anahtar imza karma için kullanılabilir. Ayrıca şansa ve sadece kullanıcı adı / şifre şifrelenmemiş göndermek ve (yalnızca bir kez olur) zamansal bir anahtarı almak, ama bunu kokladı olabilir farkında olmak gerekiyor olabilir.
Summary
Eğer zamansal bir oturum anahtarı kurabilir, size decompiled olabilir istemci programda bir şey saklamak zorunda kalmazsınız. Sunucuya bir kez gönderilen bir kullanıcı adı / parola kurmak için yeterli olmalıdır. Eğer bu anahtarı var sonra, masaüstü uygulamalar istekleri oluşturmak için kullanabilirsiniz, ve API sunucu üzerindeki talepleri kontrol edebilirsiniz.