İleti gövdesinde bir abonelikten çıkma bağlantısı, List-Unsubscribe başlık ve tek tıklama mekanizması birbiriyle ilişkili ancak farklı özelliklerdir. Tanılama, gönderenin gerçekte hangi mekanizmayı yaydığını ve gerekli imzalı başlıkların mevcut olup olmadığını belirlemelidir. Yalnızca kaynakta aboneliği iptal etme kelimesinin görülmesi, tek tıklamayla çalışan bir uygulama oluşturmaz.
İki alanı birlikte okuyun
RFC 2369 List-Unsubscribe listeden ayrılmak için URL'leri içeren bir liste komut alanı olarak tanımlar. Mailto veya HTTPS gibi yöntemleri tanımlayabilir. RFC 8058 tek tıklama mekanizması için List-Unsubscribe-Post ekler. İkincisi, List-Unsubscribe =Tek Tıklama değerini, List-Unsubscribe bir HTTPS URI'si ile kullanır. Mailto seçeneği tek başına RFC 8058 HTTPS mekanizması değildir. RFC 2369 bölüm 3.2, RFC 8058 bölüm 3.
Tek tıklamayla alıcı, belirtilen abonelikten çıkma değerini içeren bir HTTPS POST gönderir. Bir URL'yi denetlemeye yönelik rutin bir GET, RFC 8058 abonelikten çıkma eylemini kendisi gerçekleştirmemelidir. Bu ayrım önemlidir çünkü bağlantı tarayıcıları, bir kişinin listeden ayrılmaya niyeti olmadan URL'leri getirebilir. Tanılama incelemesini yetkisiz bir abonelik değişikliğine dönüştürmeyin.
İmza gereksinimini kontrol edin
RFC 8058 geçerli bir DKIM imzası Hem List-Unsubscribe hem de List-Unsubscribe-Post kapsar. Bir imzanın h= listesinde iki alan adını bulmak yararlı bir yapısal kontroldür ancak imzanın doğrulandığını kanıtlamaz.
Gerçek bir doğrulama için orijinal imzalı mesajı saklayın. Çoklu imzalar ve yinelenen başlık alanları dikkatli seçim gerektirir; saf bir alt dize araması, ilgisiz bir imzayı gereksinimi karşılayan bir imzayla karıştırabilir. İmza kapsamını, kriptografik doğrulamayı ve uç nokta davranışını ayrı kontroller olarak tutun.
Kontrollü bir örnek kullanın
Doğru iki başlık değerine sahip varsayımsal bir mesaj düşünün. Geçerli olan tek imza Kimden ve Konuyu kapsar ancak abonelikten çıkma alanlarını kapsamaz. İkinci imza her iki alanı da listeliyor ancak doğrulama başarısız oluyor. Bu mesajda hem DKIM kaynağında bir yerde geçiş ve görünür kapsama alanı vardır, ancak her iki imza da birleşik RFC 8058 gerekliliğini karşılamamaktadır.
Bir sonraki adım, onaylanmış bir gönderen değişikliği aracılığıyla, iki alanı hem doğrulayan hem de kapsayan bir imzayı tanımlamak veya oluşturmaktır. Bu öğretim örneği için hiçbir imza doğrulanmadı veya abonelik değiştirilmedi. Daha sonra doğrulanan bir kapsam imzası bile HTTPS uç nokta davranışını ve sonraki gönderim engellemeyi test edilmemiş halde bırakacaktır.
Yetkili bir uçtan uca test için özel bir test aboneliği ve gönderenin desteklediği test ortamını kullanın. Geçerli bir imzayı doğrulayın, amaçlanan POST'u gönderin ve hizmetin kendi kanıtı aracılığıyla test aboneliğinin durumunu onaylayın. RFC 8058 HTTPS yönlendirmelerini yasaklar ve çerezleri, HTTP yetkilendirmesini ve diğer istek içeriğini POST'tan hariç tutar. Alıcı, göndermeden önce kullanıcının onayını almalıdır. Herhangi bir yönlendirme veya oturum açma gereksinimini tıklamak yerine kusur olarak kaydedin; uç noktanın aboneliği iptal etme işlemini ek etkileşim olmadan tamamlaması gerekir.
Abone tanımlayıcılarını koruyun
Abonelikten çıkma URL'leri genellikle alıcıya özel bir belirteç içerir. Tam URL'yi, söz konusu kişinin aboneliğini değiştirme potansiyeline sahip olarak değerlendirin. Genel teşhis kopyasındaki belirteci çıkarın veya değiştirin, dokunulmamış mesajı özel olarak koruyun ve canlı URL'yi genel destek taleplerine veya otomatik getiricilere yapıştırmayın.
Açık bir kontrol listesiyle kapatın: alanlar mevcut, doğru sözdizimi, imzayı kapsayan doğrulandı ve yetkili uç nokta testi tamamlandı veya yapılmadı. Sağlayıcının toplu gönderen uygunluğu ve abonelikten çıkma arayüzü ekranı ayrı ürün sorularıdır. Standart düzeydeki başlık denetimi, herhangi bir posta kutusu sağlayıcısının belirli bir düğmeyi görüntüleyeceğini garanti etmez.
Her katmanı bağımsız olarak raporlayın
Başlıklar mevcut ancak imza doğrulaması mevcut değilse, yalnızca yapısal bir bulguyu bildirin. Doğrulama başarılı olursa ancak yetkili uç nokta testi gerçekleşmediyse davranışı test edilmeden bırakın. Tam nihai numuneyi ve bir sonraki katman için gereken kanıtları kaydedin.