Para taşıyan her API'nin her istek için iki şeyi kanıtlaması gerekir: istek senden geldi ve değiştirilmedi ya da tekrar gönderilmedi. HMAC imzalama ikisini de yapar. Nasıl çalıştığı ve 0trace'in bunu nasıl kullandığı şöyle.
HMAC imzalama nedir
HMAC (hash tabanlı mesaj doğrulama kodu), gizli anahtarını mesajla birleştirip bir imza üretir. Aynı sırrı bilen sunucu imzayı yeniden hesaplar ve karşılaştırır. Eşleşiyorsa istek gerçek ve değiştirilmemiştir. 0trace HMAC-SHA256 kullanır.
Tam baytları imzala
İstek gövdesini gönderildiği gibi, bayt bayt imzala. JSON'u imzaladığından farklı serileştirirsen (anahtar sırası değişmiş, fazla boşluk), imzalar eşleşmez. Gövdeyi bir kez oluştur, o metni imzala ve tam olarak o metni gönder.
Bir nonce ekle
İmza tek başına tekrarı engellemez: geçerli bir isteği yakalayan biri onu yeniden gönderebilir. Bir nonce (istek başına eşsiz bir değer) artı sınırlı bir zaman penceresi, her isteğin yalnızca bir kez kabul edilmesini sağlar. 0trace nonce tabanlı bir tekrar penceresi uygular.
Sırrı sunucuda tut
İmzayı güvenilir yapan şey sırdır, o yüzden tarayıcıya ya da mobil istemciye asla ulaşmamalı. Sunucunda imzala. Bir sır sızarsa onu değiştir.
0trace sözleşmesi
- X-API-KEY: anahtarın.
- X-API-SIGN: istek gövdesinin tam HMAC-SHA256 değeri, hex olarak.
- X-API-NONCE: istek başına eşsiz bir değer, tekrar penceresi içinde.
- Fiyatlar ve ödemeler sunucuda hesaplanır, yani uydurulmuş bir tutar gerçekte uzlaşan şeyi değiştiremez.