Varsayılan oturum kayıt yaklaşımı her birkaç saniyede bir ekran görüntüsü almaktır. Sonuç, birbirine benzeyen karelerle dolu bir dizindir — kullanıcı sayfayı okuyor, kullanıcı sayfayı okuyor, kullanıcı hala sayfayı okuyor — aralara serpiştirilmiş gerçek önemli olaylar, çok geç gelen ve sadece sonucu gösteren iki anlık görüntü arasında bir yerlerde.
Periyodik yakalama ayrıca herhangi bir denetim veya soruşturma için en önemli sorunun yanıtını kaçırır: kullanıcı ne yaptı? Bir tıklamadan 1.5 saniye sonra alınan anlık görüntü neye tıklandığını göstermez. Bir form gönderiminden 3 saniye sonra alınan anlık görüntü ne yazıldığını göstermez. Denetim kaydında bağlamsız olaylar vardır; ekran görüntülerinde olaysız bağlam vardır. Onları bağlamak oturum sayısıyla kötü ölçeklenen manuel iştir.
ZeroLeak farklı bir yaklaşım kullanır. Ekran görüntüleri zamanlayıcıda değil olayların kendisinde tetiklenir. Gezinmeler iki ekran görüntüsü yakalar — tıklamadan önceki sayfa ve yeni sayfa yüklendikten sonrası — böylece neden-sonuç bir çift olarak korunur. Her yakalamaya fare konumu çizilir, böylece neye tıklandığı görülebilir. Klavye girişleri okunabilir kelimelere tamponlanır. Altta sürekli video kaydedilir, böylece yakalanan olaylar arasındaki boşluklar gerekirse hala oynatılabilir.
Her oturum için üç kayıt alt sistemi paralel çalışır: kritik anlarda olay tetikli ekran görüntüleri, yapılandırılan kare hızında sürekli FFmpeg video, ve kelime tamponlu klavye girişi ve tam pano etkinliği ile yapılandırılmış olay kaydı. Her biri korunan servis bazında etkinleştirilip devre dışı bırakılabilir; varsayılan olarak üçü birlikte çalışır, böylece yeniden kurma her zaman mümkündür.
Yakalamalar kullanıcının gerçek eylemleriyle tetiklenir — tıklamalar, sayfa gezinmeleri, key gönderimleri, form gönderimleri, pano işlemleri. Diski boş karelerle dolduran zaman bazlı polling yok. Her ekran görüntüsü önemli bir anı yakalar; dizin uzun ve gürültülü değil, kısa ve bilgilendiricidir.
Yakalanan her ekran görüntüsünde fare konumu görünür bir gösterge ile işaretlidir — tıklama veya hover'ın tam koordinatlarında kırmızı bir nokta. Tıklamadan sonuçlanan sayfayı değil, kullanıcının neye tıkladığını görürsünüz. Çok kareli bir bulmaca değil, tek karelik niyet yeniden kurma.
Kullanıcı gezindiğinde iki ekran görüntüsü yakalanır — biri tıklamadan önceki sayfa, diğeri yeni içerik tamamen yüklendikten sonraki hedef sayfa. Neden ve sonuç bir çift olarak korunur. İncelemeci 'kullanıcı X bağlantısına tıkladı, yüklenen sonraki sayfa Y idi' diye iki bitişik kare olarak görür.
Tek tek key event'ler boşluk, enter, tab veya kısa duraklamada flush olan bir buffer'da birikir. Sonuç, key key olay dump'ı değil, kullanıcının yazdığı metin gibi okunur. Backspace'ler [BS] işareti olarak korunur, böylece düzeltmeler görünür. Tekrarlayan tuşlar (basılı tutulan) filtrelenir. Pano işlemleri gerçek içerikle birlikte ayrı kaydedilir.
Her yakalama mekanizması korunan servis bazında bağımsız olarak yapılandırılabilir ve kullanıcı oturumunda performans etkisi olmadan çalışır. Üç akış (ekran görüntüleri, video, olay kaydı) zaman damgalı olarak hizalanmıştır, böylece incelemeci aralarında sorunsuzca geçiş yapabilir.
Ekran görüntüleri kullanıcı tıklamalarında, gezinmelerde (önce-ve-sonra çiftiyle), form gönderimlerinde, key gönderimlerinde (Enter), pano işlemlerinde (kopyala, kes, yapıştır), operatör konsolundan manuel tetiklenen yakalamalarda ve başka birkaç önemli olay türünde tetiklenir. Tam olay listesi korunan servis bazında yapılandırılabilir.
Gezinmede, hedef ekran görüntüsü yalnızca yeni sayfa yüklenmeyi bitirdikten sonra yakalanır — ağ boşa çıkması artı kısa bir ek render gecikmesi beklenerek. Yakalanan ekran görüntüsü, yarım yüklenmiş bir ara durum değil, kullanıcının gerçekten göreceği şekildeki sayfayı gösterir.
Olay tetikli ekran görüntülerinin altında, oturum FFmpeg'in x11grab'i kullanılarak sürekli olarak video olarak kaydedilir. Kare hızı yapılandırılabilir (kompakt dosyalar için varsayılan 10 fps; yüksek detay yakalama için daha yüksek hızlar mevcut). Video güvenli akış ve replay için segmentlere ayrılır; segmentler ekran görüntüsü ve olay kaydı akışlarıyla hizalanmak için zaman damgalıdır.
Key event'ler kelime sınırlarında (boşluk, enter, tab) veya kısa boş bir duraklamadan sonra flush olan bir buffer'da birikir. Flush edilen dize metin gibi okunur — 'merhaba dünya [BS][BS][BS][BS][BS]selam dünya' — kullanıcının niyetini ve düzeltmelerini her tek keydown olayının gürültüsü olmadan korur.
Kopyala, kes ve yapıştır işlemleri ilgili gerçek pano içeriği dahil, klavye girişlerinden ayrı olarak kaydedilir. Bir incelemeci tam olarak ne kopyalandığını ve ne yapıştırıldığını görür, sadece bir pano olayının gerçekleştiğini değil.
Ekran görüntüleri sıralı olarak numaralandırılır (0001, 0002, ...) ve zaman damgası ile olay meta verisiyle birlikte saklanır. Operatör konsolu bunları tetikleyen olayla birlikte listeler, böylece incelemeci ilgilendiği ana doğrudan atlayabilir — örneğin bir oturumdaki tüm pano tetikli yakalamalar veya belirli bir URL etrafındaki gezinme çifti.
Ekran görüntüleri ve videonun ötesinde, yapılandırılmış bir olay kaydı kullanıcının etkileşim geçmişini tam bağlamla yakalar. Her olayın bir tipi, bir zaman damgası, ilişkili bir ekran görüntüsü referansı (uygulandığında) ve ilgili payload'ı vardır. Kaydı sadece görsel olarak göz gezdirilebilir değil, aranabilir ve analitik olarak faydalı yapan şey budur.
Her tıklama olayı x/y koordinatlarını ve imlecin altındaki DOM öğesini (etiket, sınıf, ID, mevcut olduğunda metin içeriği) kaydeder. İncelemeci, oturum kaydında belirli bir butona veya bağlantıya yapılan tıklamaları arayabilir, ekran görüntülerini birini ararken göz gezdirmek zorunda kalmaz.
Kaydırma konumu değişiklikleri log spam'inden kaçınmak için throttle edilerek kaydedilir. Kullanıcının uzun sayfalarda nereye baktığını yeniden kurmaya yetecek çözünürlük, ama dakika başına binlerce gereksiz scroll olayı üretmeden.
Her gezinme — tam sayfa yüklemeleri, tek-sayfa-uygulama pushState değişiklikleri, programatik konum değişiklikleri — kaynak URL, hedef URL, tetikleyici (bağlantı tıklaması, manuel, programatik) ve tamamlanma süresi ile loglanır. Geleneksel loglamanın kaçırdığı SPA gezinmeleri ZeroLeak'in URL polling katmanı tarafından yakalanır.
Kullanıcı bir form gönderdiğinde, olay kaydı formun action URL'sini, metodunu ve alan adlarını yakalar. Gerçek alan değerleri klavye girişi kaydı üzerinden yakalanır (böylece yazma geçmişi korunur), form olayında tekrarlanmaz.
Oturum giriş katmanında kullanıcı etkinliğini izler. Aktif ve boş durumlar arasındaki geçişler zaman damgalarıyla kaydedilir, böylece incelemeciler dikkat dönemlerini ve hareketsizliği görebilir — uyum incelemesi ve zaman bazlı denetim soruları için faydalı.
Oturum sonunda özet meta veri kaydedilir: toplam süre, boş-aktif dağılımı, her tipten toplam olay, üretilen ekran görüntüleri, video dosya referansları ve sonlandırma nedeni (timeout, manuel sonlandırma, hata). Bir koordinatör webhook'u yapılandırıldıysa, bu özet ona da tetiklenir.
Belirli oturumlarda belirli kullanıcıların ne yaptığını soran düzenleyiciler — hasta kaydı erişiminin HIPAA incelemesi, finansal yatırım masası uyumu, devlet veri işleme denetimleri. Olay tetikli yakalama, incelemecilerin hızla gezinebileceği oturum başına kısa ve bilgilendirici bir iz üretir.
Bir sızıntı veya politika ihlalinden şüphelenildiğinde, soruşturmacı kullanıcının tam olarak ne yaptığını bilmek zorundadır — sadece ne zaman değil. Fare işaretli sıralı ekran görüntüleri, kelime tamponlu klavye girişleri ve tam pano içeriği, oturumu saatlerce video izlemeden detayda yeniden oynatılabilir hale getirir.
Ortamınıza sadece görüntüleme yetkisi verilen dış kullanıcılar. Oturum başına tam kayıt — kullanıcıyı tanımlayan görünür filigranla birlikte — erişim penceresi boyunca gördükleri her şey ve yaptıkları her eylem için hesap verebilirlik sağlar.
Bir SCADA veya operasyonel konsolda beklenmedik bir olay sonrasında, kayıt operatörün önceki anlarda tam olarak ne gördüğünü ve hangi kontrollere tıkladığını gösterir. Gezinmedeki önce-ve-sonra çifti zincirleme hataları teşhis etmeyi çok daha hızlandırır.
Bir oturum açacağız, bazı bağlantılara tıklayacağız, bazı formları dolduracağız, bazı içeriği kopyalayacağız ve sonuçta oluşan ekran görüntüsü dizinini, klavye kaydını ve video segmentlerini göstereceğiz — ve bir incelemecinin oturumu bunlardan nasıl yeniden kurduğunu.