Thread Starter
#1
Webhook payload doğrulaması nasıl yapılır?
Webhook kullanırken en kritik konulardan biri, alınan payload’un gerçekten güvenilir ve değişmemiş olduğunu doğrulamaktır. Bu, özellikle hassas verilerin veya kritik işlemlerin söz konusu olduğu durumlarda, uygulamanızın güvenliğini sağlamanın temel taşlarından biridir.
İlk adım olarak, çoğu API sağlayıcısı size webhook gönderirken, payload’un bütünlüğünü ve kaynağını doğrulamak için bir imza veya token sağlar. En yaygın yöntem, HMAC (Hash-based Message Authentication Code) kullanılarak oluşturulan imzadır. Bu yöntem şu temel mantığa dayanır:
Bu doğrulama süreci, genellikle şu adımları içerir:
Örnek olarak, PHP kullanıyorsanız şu şekilde doğrulama yapabilirsiniz:
Güvenlik açısından, imza doğrulaması sırasında
Sonuç olarak, webhook payload doğrulaması, API güvenliğinin temel parçasıdır. Bu yöntem, sadece gelen verinin bütünlüğünü değil, aynı zamanda kaynağını da doğrulamaya imkan tanır. Bu nedenle, uygulamanızda mutlaka bu doğrulama adımlarını standart hale getirmeniz gerekir.
Webhook kullanırken en kritik konulardan biri, alınan payload’un gerçekten güvenilir ve değişmemiş olduğunu doğrulamaktır. Bu, özellikle hassas verilerin veya kritik işlemlerin söz konusu olduğu durumlarda, uygulamanızın güvenliğini sağlamanın temel taşlarından biridir.
İlk adım olarak, çoğu API sağlayıcısı size webhook gönderirken, payload’un bütünlüğünü ve kaynağını doğrulamak için bir imza veya token sağlar. En yaygın yöntem, HMAC (Hash-based Message Authentication Code) kullanılarak oluşturulan imzadır. Bu yöntem şu temel mantığa dayanır:
- API sağlayıcısı, webhook payload’u ve gizli anahtarını kullanarak bir imza üretir.
- Bu imza, genellikle payload ile birlikte HTTP header’larında gönderilir.
- Alıcı taraf, aynı gizli anahtar ve payload’u kullanarak kendi imzasını hesaplar.
- Hesaplanan imza ile gelen imza karşılaştırılır. Eğer ikisi eşleşiyorsa, payload’un değişmediği ve kaynağın doğrulandığı kabul edilir.
Bu doğrulama süreci, genellikle şu adımları içerir:
- Gizli anahtarın güvenli tutulması.
- Payload’un ham halinin alınması.
- İmzayı oluşturmak için, payload ile birlikte API sağlayıcısının belirttiği algoritmayı kullanmak (örneğin, SHA256).
- Hesaplanan imzayı, gelen imza ile karşılaştırmak.
- Uygunluk sağlanıyorsa, payload’un güvenilir olduğu kabul edilir.
Örnek olarak, PHP kullanıyorsanız şu şekilde doğrulama yapabilirsiniz:
CODE
12345678910111213141516171819
// Gelen header'daki imzayı alın
$signature = $_SERVER['HTTP_X_HUB_SIGNATURE'];
// Payload'u ham olarak alın
$payload = file_get_contents('php://input');
// Gizli anahtar
$secret = 'sizin-gizli-anahtarınız';
// Hesaplanan imzayı oluşturun
$hash = 'sha256=' . hash_hmac('sha256', $payload, $secret, false);
// İmzaları karşılaştırın
if (hash_equals($signature, $hash)) {
// Güvenilir payload
} else {
// Güvenlik hatası veya geçersiz payload
}
Güvenlik açısından, imza doğrulaması sırasında
hash_equals fonksiyonunu kullanmak, zaman saldırılarına karşı koruma sağlar. Ayrıca, API sağlayıcısının belirttiği algoritma ve header isimlerine dikkat etmek gerekir. Sonuç olarak, webhook payload doğrulaması, API güvenliğinin temel parçasıdır. Bu yöntem, sadece gelen verinin bütünlüğünü değil, aynı zamanda kaynağını da doğrulamaya imkan tanır. Bu nedenle, uygulamanızda mutlaka bu doğrulama adımlarını standart hale getirmeniz gerekir.
