Maskelemeye siz karar verirsiniz ve veri ağa çıkmadan önce yapılır
Tarayıcı SDK’sı insanların yazdıklarını varsayılan olarak maskeler; bir kayıt formun yıldızlarla doldurulduğunu gösterir, yanlış anlaşılan etiketi ve doğrulamadan geçmeyen alanı yine görürsünüz. maskAllInputs: false değerlerin kendisini kaydeder, maskAllTyping: true ise zengin metin editörlerini de maskeler. Altında hiçbir seçeneğin kaldıramayacağı bir taban vardır: parolalar, tek kullanımlık kodlar, kart numaraları, CVV’ler, son kullanma tarihleri, banka bilgileri ve kart numarası biçimindeki her değer, tek bir bayt gönderilmeden önce kullanıcının cihazında ya da tarayıcısında değiştirilir. Hiçbir şey yüklenip sonra gizlenmez; çünkü gizlenmiş olmak, hiç var olmamakla aynı şey değildir.
Yani bir kaydın ne kadarını içerdiğine siz karar verirsiniz; bunu, kaydın boş olduğunu varsaymanıza izin vermektense açıkça söylemeyi tercih ederiz. Sayfalarınızın hassas bölümlerini ar-mask ile işaretleyin: biçimlerini korur, kelimelerini kaybederler. Her şeyi maskeleseniz bile inceleyen kişi bir alanın doldurulduğunu, nerede doldurulduğunu ve ne kadar sürdüğünü görür. Sonraki her adım — depolama, oynatma, çeviri — yalnızca tarayıcıdan çıkanı görür. Neyin hiç kaydedilmediğini tam olarak maskeleme dokümantasyonu listeliyor.
Oynatma sandbox’ı: üç duvar, bir test
Oynatıcı, bir müşterinin DOM’unu panelin içinde çizer. Bununla tenant’lar arası bir güvenlik ihlali arasında üç engel durur:
- Script gövdeleri müşterinin sayfasından hiç çıkmaz. rrweb, kayıt anında bunları bir yer tutucuyla değiştirir.
- Script’ler noscript olarak yeniden kurulur. İşaretleme kod taşısa bile oynatma onu çalıştıramaz.
- Oynatma iframe’i allow-scripts olmadan sandbox içinde çalışır. rrweb bu izni yalnızca canvas oynatma açıldığında ekler; bu yüzden kapalı kalır — biri açarsa bir test derlemeyi durdurur.
Gerçek bir tarayıcıda kontrol edildiğinde oynatma iframe’i sandbox="allow-same-origin" bildirir ve kaydedilen sayfanın script etiketleri noscript olarak geri gelir. Mobil oturumlar markup olarak değil, yapılandırılmış veri olarak kaydedildiği için çizilecek yabancı bir DOM hiç yoktur.
Proje anahtarı herkese açıktır. Origin izin listesi değildir.
Kod parçacığınızdaki anahtar HTML’inizle birlikte yayınlanır; bu yüzden sır olamaz ve sır gibi ele alınmaz. Veri alımı, panelin tam tersi bir yük profiline sahip ayrı bir servistir — yüksek hacimli, kimlik doğrulamasız, yalnızca yazma — ve asıl erişim denetimi, bir sayfanın taklit edemeyeceği sunucu tarafı Origin izin listesidir. Bir uygulamanın web kökeni olmadığından, appId olarak gönderdiği bundle id projenin İzinli uygulamalar listesiyle karşılaştırılır; bu bir sır değil, başıboş trafiği dışarıda tutan bir filtredir. Veri alımı ayrıca istek sınırları — tek bir yoğun telefon projenin payını tüketemesin diye cihaz başına dakikada 120 istek —, idempotent parça yüklemeleri ve veri doğrulaması uygular; her biri kendi testleriyle doğrulanır.
Tenant izolasyonu, dışarıdan doğrulanır
Kuruluşa bağlı her uç nokta, test paketinde başka bir tenant’ın gözünden sınanır. Parça anahtarları proje ve oturum kimliklerini içerir ve her parça okuması kuruluş kapsamındadır; böylece denetlenmemiş bir okuma, eline bir kimlik geçen herkese başka bir müşterinin kaydını akıtamaz. Size ait olmayan bir kaynak 404 döner, asla 403 değil: API, bir kaynağın var olup olmadığını ele vermez.
Hesaplar, roller ve denetim kaydı
Parolalar OWASP parametreleriyle Argon2id kullanılarak hash’lenir; bu da testle güvence altındadır. Yenileme token’ları her kullanımda yenilenir ve tekrar kullanılan bir token tüm token ailesini iptal eder. Beş rol — sahip, yönetici, moderatör, üye ve izleyici — API’nin uyguladığı ve testlerin hücre hücre kapsadığı bir yetki matrisine karşılık gelir; hiçbir rol kendi seviyesinde veya üstünde bir rol atayamaz. Yetki değişiklikleri, silmeler ve anahtar yenilemeleri yalnızca eklenebilen bir denetim kaydına yazılır.
Saklama süresini siz belirlersiniz, silindiğini kanıtlayabilirsiniz
Saklama süresi kuruluş bazında gün olarak ayarlanır. Bir temizleyici bu süreyi aşan kayıtları sabit bir takvimle kaldırır, silme işlemi denetim kaydına yazılır ve Free planının 14 günü, daha uzun ücretli sürelerle aynı şekilde işler. Her iki SDK’da da onay mekanizması vardır (requireConsent, siz izin verene kadar hiçbir şey kaydetmez) ve gizlilik politikası, AnyReplay’in ekibiniz hakkında neleri sakladığını açıklar.
Güvenlik ekibinize anlatacaklarımız
API test paketi, gerçek uygulamayı gerçek bir PostgreSQL motoruna karşı ayağa kaldırır ve HTTP üzerinden çalıştırır; hiçbir şey mock’lanmaz, çünkü yetki kontrolünü mock’layan bir yetkilendirme testi hiçbir şey kanıtlamaz. Tarayıcı SDK’sının CI’da uygulanan bir paket boyutu bütçesi vardır. Her yanıtta güvenlik başlıkları ayarlanır. Bir güvenlik anketine ya da DPA’ya ihtiyacınız varsa bunlar fiyatlandırma sayfasındaki Enterprise planına dahildir; karşılaştırma sayfaları da bu tercihleri diğer araçlarınkiyle yan yana koyar.
