Dijital parmak izi, web sitenize geri dönen bir kullanıcıyı tanımaya çalışmak veya aynı kullanıcıyı farklı web sitelerinde tespit etmek anlamına gelir. Sizin ayarlarınız ile başka kullanıcılarınkiler arasında birçok özellik farklı olabilir. Örneğin, farklı bir cihaz türü ve tarayıcı kullanıyor, farklı bir ekran boyutuna sahip ve farklı yazı tipleri yüklü olabilirsiniz. "Dejavu Sans" yazı tipini kullanıyorum. ve yoksa herhangi bir web sitesi, o yazı tipinin olup olmadığını kontrol ederek aramızdaki farkı anlayabilir. Parmak izi oluşturma işlemi bu şekilde çalışır. Bu veri noktalarından bir koleksiyon oluşturursunuz ve her biri kullanıcıları ayırt etmenin daha fazla yolunu sunar.
Daha resmi bir tanım şu şekilde olabilir: Parmak izi, kullanıcının kurulumunun belirgin ve belirgin olmayan uzun ömürlü özelliklerini kullanarak kullanıcıyı mümkün olduğunca diğer kullanıcılardan ayırt etmeye çalışma işlemidir.
Parmak izi neden kullanıcı gizliliğini engeller?
Kullanıcının parmak izinin alınmasının önemli olduğu bazı uç durumlar vardır (ör. sahtekarlık algılama). Ancak dijital parmak izi veya web sitelerinde kullanıcıları izlemek için kullanılır ve izleme işlemi çoğunlukla kullanıcıların rızası olmadan veya bazı durumlarda, kullanıcıyı yeterli düzeyde bilgilendirmeyen geçersiz iznin bir sonucu olabilir. Bu işlemi yaptığınızda, bu kullanıcılar genellikle ve ihanete uğradığını hissetmektir.
Parmak izi, bir kullanıcıyı diğerinden gizlice ayırt etmenin yollarını bulmak anlamına gelir. Parmak izi, aynı web sitesinde aynı kullanıcının hâlâ mevcut olduğunu veya aynı kullanıcının aynı anda iki farklı tarayıcı profilinde olduğunu tanımak için kullanılabilir. Bu, dijital parmak izinin sitelerde kullanıcıları izlemek için kullanılabileceği anlamına gelir. Deterministik ve açık takip yöntemleri, kullanıcıya özgü benzersiz bir kimlikle depolamak gibi, kullanıcılar tarafından bir ölçüde gözlemlenebilir ve (ve önceki modülde bu yaklaşımların bazıları açıklanmıştı). Ancak parmak izi, gizli olduğu için ondan kaçınmak daha zordur. Parmak izi, değişmeyen özelliklere dayanır ve büyük olasılıkla görünmez şekilde gerçekleşir. Bu nedenle buna "parmak izi" denir. Dijital parmak izinizi veya parmaklarınızın ucundaki parmak izlerinizi değiştirmek en iyi ihtimalle zordur.
Tarayıcı tedarikçi firmaları, kullanıcıların izlenmeyi sevmediğini bilir ve dijital parmak izini sınırlayan özellikleri sürekli olarak uygular (bunlardan bazılarını önceki modülde görmüştük). Bu özellikler, iş gereksinimlerinizi nasıl etkileyebilir ve gizliliği koruyarak istediğiniz işlemleri nasıl yapabilirsiniz? Bu konu, tarayıcı korumasının nasıl dijital parmak izi izlenmeyi nasıl engelleyeceğini değil, ne yaptığınızı ve nasıl yapacağınızı etkiler.
Uygulamada, çoğu geliştiricinin ve işletmenin kullanıcıların parmak izini almasına gerek yoktur. Uygulamanızda kullanıcıların oturum açması gerekiyorsa kullanıcılarınız, izin vererek ve istedikleri zaman tek taraflı olarak devre dışı bırakabilecekleri bir şekilde kimliklerini size tanımlar. Bu, hangi kullanıcıların oturum açtığını anlamanızı sağlayan, gizliliği koruyan bir yöntemdir. Uygulamanız herhangi bir şekilde oturum açmalarını gerektirmeyebilir, bu da kullanıcılarınızın güvenliğini daha da (ve sonrasında bu belgelerin yalnızca ihtiyacınız olan verilere erişebilirsiniz).
Yapılması gerekenler
Üçüncü taraflarınızı parmak izi açısından değerlendirin. Üçüncü taraflar modülü kapsamında dahil ettiğiniz tüm üçüncü taraf hizmetlerinin ve yaptıkları web isteklerinin zaten bir listesi olabilir. Bu mümkün olabilir görmek için bu istekleri inceleyin. Ancak bu genellikle zordur; parmak izi alma, doğası gereği kullanıcı onayına tabi olmayan verileri istemeyi içeren gizli bir işlemdir.
Dijital parmak iziyle ilgili belirtilere bakmak için üçüncü taraf hizmetlerinizin ve bağımlılıklarınızın gizlilik politikalarını da incelemeniz önerilir. kullanım durumu. Bu yöntem bazen "deterministik eşleme"nin aksine "olasılık eşleme" veya olasılık eşleme teknikleri paketinin bir parçası olarak adlandırılır.
Dijital parmak izi nasıl çalışır?
Bu özelliklerin tümünü içeren kişisel kombinasyonunuz genellikle size veya en azından benzer kişilerden oluşan küçük bir gruba özgüdür. Bu, sizi gizlice izlemek için kullanılabilir.
Not: Pasif ve etkin parmak izi
Burada, pasif ve etkin parmak izi teknikleri arasında faydalı bir ayrım yapılabilir. Pasif parmak izi alma tekniği, web sitesine varsayılan olarak verilen bilgileri kullanan bir tekniktir. Etkin parmak izi alma tekniği ise ek bilgi için tarayıcıyı açıkça sorgulayan bir tekniktir. Bu ayrım önemli olmasının nedeni, aktif teknikleri tespit edip müdahale etmeyi veya azaltmayı deneyebilir. API'ler kısıtlanabilir veya bir iletişim kutusuyla ağ geçidine eklenebilir kullanıcının iznini isteme (ve dolayısıyla kullanıcıya bunların kullanıldığı konusunda uyarıda veya kullanıcının bunları reddetmesine izin verme) varsayılan olarak). Pasif teknik, genellikle bilgi otoyolunun ilk günlerinde bu bilgilerin tüm sitelere verilmesi nedeniyle web sitesine önceden verilmiş verileri kullanan bir tekniktir. Kullanıcı aracısı dizesi buna örnektir. Bu konuyu daha ayrıntılı olarak ele alacağız. O kadar çok bilgi sunma hususunda bir web sitesinin farklı reklamlar göstermesini sağlamak için kullanıcının tarayıcısı, sürümü ve işletim sistemiyle ilgili bilgiler buna göre çalışır. Ancak bu, kullanıma sunulan ayırt edici bilgilerin miktarını da artırır, Böylece bir kullanıcının diğerinde tanımlanmasına yardımcı olur. Bu nedenle, bu bilgiler gün geçtikçe daha fazla kullanılamamaktadır veya en azından dondurularak ön plana çıkarırız. Yapacağınız işlem bu bilgilere dayanıyorsa (örneğin, farklı bir web sitesi için kod dalları, kullanıcı aracısına göre değişir. Tarayıcılar giderek donuyorsa veya bu bilgileri durdurdukça bu kod bozulabilir. Testler burada en iyi savunmadır ( daha sonra bakın).
Bir yana: Dijital parmak izini ölçme
Bu veri noktalarının her birinin ne kadar bilgi sağladığına yönelik teknik ölçüm, entropi olarak adlandırılır ve bit cinsinden ölçülür. Birçok farklı olası değerin bulunduğu bir özellik (ör. yüklü yazı tiplerinin listesi), toplama çok sayıda bit katkıda bulunabilir. Bu durumda, ayırt edici gücü çok yüksek olmayan bir özellik (ör. kullandığınız işletim sistemi), yalnızca birkaç bit katkıda bulunabilir. HTTP Almanac, mevcut parmak izi kitaplıklarının birçok farklı API'den gelen yanıtları bir "karma oluşturma" işlemiyle birleştirerek bu süreci nasıl otomatikleştirdiğini açıklar. Bu karma oluşturma işlemi, yalnızca küçük bir kullanıcı grubunu veya hatta tek bir kullanıcıyı tanımlayabilir. Maud Nalpas bunu bazı ayrıntılarıyla ele alıyor: bu YouTube videosunu kısa bir süre önce dinlediniz. Kısacası, bu videoyu izlediğiniz arkadaşlarınızın en sevdikleri müzikleri, en sevdikleri yemekleri ve konuştukları dilleri içeren bir liste... ama adlarıyla birlikte emin olun. Bir kişinin listesindeki kişiler arkadaşlarınız arasında benzersiz bir şekilde tanımlanabilir veya en azından ve listeye yalnızca birkaç kişiye eklendi. Parmak izi oluşturma işlemi bu şekilde çalışır. Beğendiğiniz öğelerin listesi "karma" olur. Entegre bağlantısı olmayan iki farklı sitede bir kullanıcıyı aynı kişi olarak tanımlamak daha kolay hale gelir. İzleme: Kullanıcının gizlilik isteğini atlatmak için.
Tarayıcılar dijital parmak izi alma işlemine karşı ne yapıyor?
Daha da önemlisi, tarayıcı sağlayıcıları bir web sitesine (veya web sitesine eklenmiş bir üçüncü tarafa) ilişkin birçok farklı yöntemin oldukça farkındadır. Kullanıcı için ayırt edici bir parmak izi hesaplaması veya benzersizliğe katkıda bulunmak amacıyla farklı bilgi parçalarının kullanılması olduğunu unutmayın. Bu yöntemlerden bazıları açık ve bilinçlidir. Örneğin, tarayıcının kullanıcı aracısı dizesi genellikle kullanılan tarayıcı, işletim sistemi ve sürümü tanımlar (bu nedenle, farklı tarayıcılar kullanıyorsak sizi benden ayırt etmeye yardımcı olur). Bazı yöntemler, parmak izi oluşturmak için kasıtlı olarak oluşturulmaz ancak yine de parmak izi oluşturmaya yol açar. Örneğin, yazı tipi listesi veya tarayıcıda kullanılabilen video ve ses cihazları. (Tarayıcının bunu kullanması bu cihazların listesini alabilirsiniz.) Bazılarının ise parmak izi kuyusuna katkıda bulunduğu kabul edilmiştir. Örneğin, bir tuval öğesindeki yazı tiplerinin tam olarak piksel oluşturulması. Daha pek çok yöntem vardır ve tarayıcınızın benimkinden farklı olmasının her yolu entropi ekler ve dolayısıyla sizinle aramızdaki farkı anlamanın ve bir kişiyi web sitelerinde mümkün olduğunca benzersiz bir şekilde tanımlamanın bir yolunu sunuyor. https://amiunique.org adresinde, parmak iziyle katkıda bulunabilecek durumların uzun (ancak kesinlikle kapsamlı olmayan) bir listesi yer alıyor özellikleri vardır ve liste sürekli büyümektedir (çünkü kullanıcılar, geri kalan kullanıcıları takip edebilecekleri veya beklemeyin).
Belirli güçlü API'lerin desteklenmemesi
Tarayıcı tedarikçi firmaları, kullanıcının parmak izini hesaplamaya yönelik tüm bu yaklaşımlara yanıt olarak bu API'lerden elde edilen entropi miktarını azaltmanın yollarını bulmaya çalışıyor. En kısıtlayıcı seçenek, daha önce bunları uygulamamaktır. Bu işlem, bazı büyük tarayıcılar tarafından çeşitli donanım ve cihaz API'ları (örneğin, istemci tarafı web uygulamaları). Bu durum, uygulama ve hizmetlerinizi etkileyebilir. Bir API'yi, API'yi uygulamayan bir tarayıcıda kullanamazsınız. Bu durum, bazı donanım yaklaşımlarının dikkate alınmasını kısıtlayabilir veya tamamen engelleyebilir.
Kullanıcı izinleri ağ geçidi
Tarayıcı tedarikçi firmaları tarafından benimsenen ikinci yaklaşım ise bir tür açık kullanıcı izni olmadan API veya veri erişimlerini engellemektir. Bu yaklaşım genellikle güvenlik amacıyla da uygulanır. Bir web sitesinin web kameranızla fotoğraf çekememesi gerekir. izniniz olmadan! Ancak burada gizlilik ve güvenlik benzer çıkarlara sahip olabilir. Bir kişinin konumunu tanımlamak elbette gizlilik ihlalinin yanı sıra dijital parmak izinin benzersizliğine de katkıda bulunur. İzin gerekli bir konumun bu parmak izinin benzersizliğine kattığı ekstra entropiyi azaltmaz, ancak coğrafi konumun Dijital parmak izi artık görünmez şekilde yapılmadığından coğrafi konum belirlemenin kullanılması ortadan kalkar. Projenin tüm noktası Dijital parmak izi, kullanıcıların birbirinden gizlice ayırt edilebilmesini sağlar. Kullanıcının kimliğini belirlemeye çalıştığınızı bilmesine hazırsanız parmak izi tekniklerine ihtiyacınız yoktur. Kullanıcıdan hesap oluşturmasını ve bu hesapla oturum açmasını isteyin.
Tahmin edilemezlik ekleme
Bazı durumlarda kullanılan üçüncü bir yaklaşım, tarayıcı tedarikçilerinin API'lerden gelen yanıtları daha az ayrıntılı ve dolayısıyla daha az tanımlayıcı hale getirmek için "bulanıklaştırma"sıdır. Bu, veri modülündeki rastgele yanıt mekanizmasının bir parçası olarak, kullanıcılardan veri toplarken kimliği tanımlayabilecek verileri yanlışlıkla toplamayı önlemek için yapabileceğiniz bir işlem olarak açıklanmıştı. Tarayıcı tedarikçi firmaları
, web uygulamaları ve üçüncü tarafların kullanımına sunulan API verileri için de bu yaklaşımı benimseyebilir. Buna örnek olarak
sayfa performansını ölçmek için çok doğru zamanlama API'leri
başlangıç fiyatı: window.performance.now()
. Tarayıcı bu değerleri mikrosaniye hassasiyetinde bilir ancak döndürülen değerler, parmak izi oluşturmada kullanılmalarını önlemek için (ve tabii ki zamanlama saldırılarını önlemek için güvenlik amacıyla) en yakın 20 mikrosaniye sınırına yuvarlanarak kasıtlı olarak hassasiyetleri azaltılır. Burada amaç,
için API'lerin kullanışlı olmaya devam etmesini sağlamak, ancak yanıtları daha az tanımlayıcı yapmak, özünde "sürü bağışıklığı" sağlamak yapmak
cihazınız size özel olmaktan çok herkesin cihazına benzer. Safari, sistem yapılandırmasının basitleştirilmiş bir sürümünü sunar
tam da bu yüzden.
Gizlilik bütçesini uygulama
Gizlilik Bütçesi, tarayıcıların her bir dijital parmak izi yüzeyinin ortaya çıkardığı bilgileri tahmin etmesini öneren bir tekliftir. Henüz tarayıcılarda kullanıma sunulmadı. Amacımız, kullanıcı gizliliğini korurken güçlü API'lere izin vermektir. Gizlilik bütçesi teklifi hakkında daha fazla bilgi edinin.
Geniş bir test ortamı kullanın
Tüm bunlar, uygulama ve hizmet geliştirme şeklinizi etkileyecektir. Özellikle de, çok çeşitli yanıtlar ve yaklaşımlar söz konusudur. ve platformlardan daha iyi anlayacaksınız. Bu nedenle, çalışmanızı birden fazla farklı ortamda test etmenin kritik olduğu anlamına gelir. Bu, elbette her zaman önemlidir, ancak HTML oluşturmanın veya CSS'nin belirli bir süre için oluşturma motoru, arama motorunun hangi tarayıcıda veya platformda bulunduğuna bakılmaksızın (yani yalnızca tek bir tarayıcıda test etmek Örneğin, Blink tabanlı tarayıcı). Bu durum API kullanımı için kesinlikle geçerli değildir çünkü ortak bir oluşturma motoru, API yüzeylerini dijital parmak izine karşı sağlamlaştırma yöntemlerinde önemli ölçüde farklılık gösterebilir.
Yapılması gerekenler
- Test sırasında öncelik vermeniz gereken tarayıcı grubuna karar vermek için kendi analizlerinizi ve kitlenizi kontrol edin.
- Firefox, Chrome, Edge, masaüstünde Safari, Android'de Chrome ve Samsung Internet, ve iOS'te Safari. Bu sayede üç büyük oluşturma motorunda (Firefox'ta Gecko, Chrome, Edge ve Samsung Internet'te Blink'in çeşitli çatalları ve Safari'de Webkit) ve hem mobil hem de masaüstü platformlarında test yapabilirsiniz.
- Siteniz tablet, akıllı saat veya oyun konsolu gibi daha az yaygın cihazlarda da kullanılabiliyorsa bu cihazlarda da test edin. Bazı donanım platformları, tarayıcı güncellemeleri konusunda mobil ve masaüstü platformlardan daha yavaş olabilir. Bu da bazı API'lerin bu platformlardaki tarayıcılarda uygulanmamış veya kullanılamamış olabileceği anlamına gelir.
- Kullanıcı gizliliğini öne çıkaran bir veya daha fazla tarayıcıda test edin. Kullanabileceğiniz ve kullanabiliyorsanız en yaygın tarayıcılarınızın yaklaşan ön sürümlerini ve test sürümlerini ekleyin: Safari'nin teknoloji önizlemesi, Chrome'un Canary sürümü, Firefox'un Beta kanalı. Bu sayede, API'deki kesintileri ve sitelerinizi etkileyen değişiklikleri, kullanıcılarınızı etkilemeden önce tespit etme şansınız olur. Benzer şekilde, kullanıcılarınızın mevcut analizleri göz önünde bulundurmanız önemlidir. Eğer Kullanıcı tabanında yüksek sayıda eski Android telefon bulunduğu için bunları testlerinize dahil ettiğinizden emin olun. Çoğu kullanıcı, geliştirme ekibinin sahip olduğu hızlı donanıma ve en son sürümlere sahip değildir.
- Hem temiz bir profil kullanarak hem de gizli tarama modunda test edin; büyük olasılıkla, daha önce kişisel profilinizde gerekli izinler. Herhangi bir soru için siteye izin vermezseniz ne olacağını test edin.
- Sayfalarınızı Firefox'un parmak izi korumasında açık bir şekilde test edin yatırım yapmanız önemlidir. Bunu yaptığınızda, sayfanız parmak izi almaya çalışıyorsa izin iletişim kutuları gösterilir veya bazı API'ler için bulanıklaştırılmış veriler döndürülür. Bu, hizmetinize dahil olan üçüncü tarafların parmak izi oluşturabilecek veriler kullanıp kullanmadığını veya kendi hizmetinizin buna bağlı olup olmadığını doğrulamanıza yardımcı olur. Ardından, kasıtlı bulanıklaştırmanın yapmanız gerekenleri yapmayı zorlaştırıp zorlaştırmadığını değerlendirebilirsiniz. Bu verileri başka bir kaynaktan elde etmek için gerekli düzeltmeleri yapın, bu veriler olmadan devam edin veya daha az ayrıntılı veriler kullanın.
- Daha önce üçüncü taraflar modülünde açıklandığı gibi, üçüncü taraf reklam stratejinizi
kullanıp kullanmadıklarını görmek için
bağımlılıkları kontrol etmelisiniz. Pasif dijital parmak izinin tespit edilmesi zordur (ve
imkansızdır.) ancak dijital parmak izi modu, bazı dijital parmak izi tekniklerini işaretleyebilir.
ve navigator.userAgent kullanımlarını veya
<canvas>
nesnelerinin beklenmedik şekilde oluşturulmasını araştırmak da bazı yaklaşımları ortaya çıkarabilir. teklif veren reklamlar da dahildir. "Olası eşleşme" teriminin kullanım alanlarını bulmak da pazarlama departmanında üçüncü bir tarafı açıklayan teknik materyal; Bu durum bazen dijital parmak izi tekniklerinin kullanıldığını gösterebilir.
Tarayıcılar arası test araçları
Kodunuzu gizlilik amacıyla test etmeyi otomatikleştirmek zordur. Manuel olarak test ederken dikkat edilmesi gerekenler daha önce açıklanmıştır. Örneğin, siteye erişmeye çalıştığı API'ler için siteye erişimi reddettiğinizde ne olur ve bu izin kullanıcıya nasıl sunulur? Otomatik test, sitenin kullanıcının güvenmesine yardımcı olacak mı, yoksa kullanıcıyı ona güvenmemeye teşvik edecek şekilde mi davrandığını değerlendiremez. bir şeylerin gizlendiğini düşünebilirsiniz.
Ancak site denetlendikten sonra, yeni tarayıcı sürümlerinde (veya yakında kullanıma sunulacak "beta" ve "önizleme" sürümlerinde) herhangi bir sorun olmadığını doğrulamak için API'lerin test edilmesi otomatikleştirilebilir ve büyük ölçüde mevcut test paketinizin bir parçası olarak yapılmalıdır. API yüzey kapsamıyla çalışırken otomatik test araçlarınızda dikkate almanız gereken bir nokta, çoğu tarayıcının hangi API'lerin ve özelliklerin kullanılabileceği konusunda belirli düzeyde kontrol sağlamasıdır. Chrome, Firefox gibi komut satırı anahtarları aracılığıyla bunu yapar. Test aracı kurulumunda bunlara erişmek, belirli testleri API'ler kapalı veya açıkken çalıştırmanıza olanak tanır. (Başlatırken tarayıcı işaretleri ekleme yöntemleri için örneğin Cypress'in browser-launch eklentisini ve puppeteer'ın launch.args parametresini inceleyin.)
Yaklaşık bilgiler için yalnızca kullanıcı aracısı dizesini kullanın
Başka bir örneği ele alalım. Web'in başlangıcından bu yana tarayıcılar, HTTP User-Agent üstbilgisi. Yaklaşık olarak bu kadar uzun bir süredir web geliştiricileri, farklı tarayıcılara farklı içerikler sunmak için kullanıcı aracısı başlığının içeriğini kullanmamaları konusunda uyarılıyor. Ancak web geliştiricileri, tüm bu süre boyunca bazı durumlarda (tümü olmasa da) belirli bir gerekçeyle bu işlemi yapmaya devam etti. Tarayıcılar, web siteleri tarafından mükemmel olmayan bir deneyim için öne çıkmak istemediğinden, bu, her tarayıcının diğer bir tarayıcı gibi davranmasına ve kullanıcı aracısı dizesinin şuna benzer şekilde görünmesine neden olur:
Mozilla/5.0 (Linux; Android 6.0.1; SGP771 Build/32.2.A.0.253; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Safari/537.36
.
Bu, diğer unsurların yanı sıra, ilk astronotların piyasaya sürüldüğü tarihte piyasaya sürülmüş bir tarayıcı olan Mozilla/5.0 olduğunu iddia eder. 20 yıldan uzun süre önce Uluslararası Uzay İstasyonu'na bindi. Kullanıcı aracısı dizesi, dijital parmak izi alma için zengin bir entropi kaynağıdır; elbette ki bu dijital parmak izini azaltmak için tarayıcı üreticileri kullanıcı aracısı başlığını dondurmuş ya da teşvik etmektir. Bu, API'yi tamamen kaldırmadan API'lerin sağladığı verileri değiştirmenin başka bir örneğidir. Boş bir kullanıcı aracısı başlığı göndermek, varlığını varsaydığı sayısız web sitesini bozar. Genel olarak tarayıcılar, ayrıntıların bir kısmını kaldırır ve daha sonra çoğunlukla aynı şekilde bırakır. (Bu durumun Safari, Chrome ve Firefox'ta gerçekleştiğini görebilirsiniz.) Karşı koruma ayrıntılı dijital parmak izini çıkarma, kullanıcı aracısı başlığının artık doğru olduğuna güvenemeyeceğiniz ve istiyorsanız alternatif veri kaynakları bulmanız gerekir.
Kullanıcı aracısındaki veriler tamamen kaldırılmayacak olsa da daha düşük ayrıntı düzeyinde sunulur veya bazen eski ancak değişmeyen bir sayı raporlandığı için yanlış olabilir. Örneğin, Firefox, Safari ve Chrome'un tümü, bildirilen macOS sürüm numarasını onla sınırlar (buradaki daha ayrıntılı tartışma için Kullanıcı aracısı dizesi azaltmayla ilgili güncelleme başlıklı makaleyi inceleyin). Chrome'un kullanıcı aracısı dizesindeki verileri nasıl azaltmayı planladığıyla ilgili tüm ayrıntıları Kullanıcı Aracısı Kısaltma'da bulabilirsiniz Ancak, kısacası, bildirilen tarayıcı sürüm numarasının yalnızca ana sürümü (yani sürüm numarasının tarayıcı 123.10.45.108 sürümü olsa bile 123.0.0.0 gibi görünür) ve işletim sistemi sürümü ayrıntılı bilgi içermez ve birkaç değişmeyen seçenekten birine dondurabilirsiniz. Dolayısıyla, hayali bir "Windows 20" işletim sisteminde çalışan hayali bir Chrome 123.45.67.89 sürümü, sürüm numarasını şu şekilde bildirir:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/123.0.0.0 Safari/537.36
İhtiyacınız olan temel bilgiler (tarayıcı sürümü) hâlâ mevcuttur: Windows'da Chrome 123. Ancak yan kuruluş bilgileri (yonga mimarisi, Windows sürümü, Safari'nin hangi sürümünü taklit ettiği, tarayıcının alt sürümü) dondurduktan sonra kullanılamayacak.
Bunu farklı bir platformdaki "mevcut" Chrome kullanıcı aracısıyla karşılaştırın:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
,
Chrome sürüm numarası (104) ile platform tanımlayıcısının farklı olduğu görülüyor.
Benzer şekilde, Safari'nin kullanıcı aracısı dizesi bir platform ve Safari sürüm numarası gösterir ve iOS'te bir işletim sistemi sürümü de verir ancak diğer tüm bilgiler dondurulur. Dolayısıyla, hayali bir macOS 20'de çalışan hayali Safari 1234.5.67 sürümü, kullanıcı aracısına şu şekilde sahip olabilir:
Mozilla/5.0 (Macintosh; **Intel Mac OS X 10_20_0**) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15
,
Hayali bir iOS 20'de bu değerler şöyle olabilir:
Mozilla/5.0 (iPhone; CPU **iPhone OS 20_0** like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/**20.0 Mobile/15E148 Safari/605.1.15**
.
Burada da temel bilgilerin (Safari, iOS veya macOS'te) kullanılabildiğini ve iOS Safari'nin hâlâ bir iOS sürüm numarası sağladığını hatırlatmak isteriz; ancak geçmişte kullanılabilen yardımcı bilgilerin çoğu donduruldu. Önemli bir nokta, Safari sürüm numarasını da içermesidir. Bu numara her zaman mevcut olmayabilir.
Bildirilen kullanıcı aracısında yapılan değişiklikler hararetle tartışıldı. https://github.com/WICG/ua-client-hints#use-cases özetler birkaç argüman ve değişikliğin nedenlerinden bahsedin. Rowan Merewood'un da bir slayt slaytı var. .
Kabartma
Fuzzing, güvenlik uygulaması terimidir. API'lerin, bu işlemlerin üstesinden gelmek için beklenmedik değerlerle çağrılması
ve güvenlik sorununa yol açabilir. Web geliştiricileri siteler arası komut dosyası (XSS) hakkında bilgi sahibi olmalıdır.
Bu sorun, bir sayfaya kötü amaçlı komut dosyası eklemeyi içerir. Bunun nedeni genellikle sayfanın, yerleştirilen HTML'yi doğru şekilde kod dışına almamasıdır (bu nedenle bir arama sorgusu yaparsınız)
<script>
yazısı bulunur). Arka uç geliştiricileri SQL yerleştirme,
Kullanıcı girişini doğru şekilde doğrulamayan veritabanı sorguları güvenlik sorunları ortaya çıkarmaktadır (bunun amacı, xkcd'de
Küçük Bobby Tables). Fuzzing veya fuzz testi, bir API'ye birçok farklı geçersiz veya beklenmedik giriş sağlama ve sonuçları güvenlik sızıntıları, kilitlenmeler veya diğer kötü kullanımlar açısından kontrol etme amaçlı otomatik denemeler için daha uygundur. Bunların tümü kasıtlı olarak yanlış bilgi sağlama örnekleridir. Fakat burada işlem yapılıyor
.
Yapılması gerekenler
- Kullanıcı aracısı dizesine bağlı olup olmadığını görmek için kod tabanınızı kontrol edin (
navigator.userAgent
aramasının en çok tekrarı bulabilirsiniz veya arka uç kodunuz büyük olasılıkla üstbilgi olarakUser-Agent
'yi bulacaktır (örneğin, ve bildirmeyi konuştuk. - Kendi kodunuzda bu tür kullanımlar bulursanız kodun neyi kontrol ettiğini öğrenin ve bu ayrımı yapmanın başka bir yolunu bulun (veya bağımlılığı değiştirin, sorun bildirerek veya güncelleme olup olmadığını kontrol ederek bağımlılıkla birlikte çalışın). Bazen Hataları çözmek için tarayıcı farklılaştırması gereklidir, ancak dondurulduktan sonra kullanıcı aracısı giderek bunu yapmanın bir yolu olarak kalmayacaktır.
- Güvende olabilirsiniz. Yalnızca marka, büyük sürüm ve platformun temel değerlerini kullanıyorsanız bu değerler kullanıcı aracısı dizesinde neredeyse her zaman kullanılabilir ve doğru olur.
- MDN, ("tarayıcı algılama") kullanıcı aracısı dizesine bağımlı olmaktan kaçınmanın iyi yollarını açıklar. Bunların arasında bir diğeri de özellik algılamadır.
- Kullanıcı aracısı dizesine bir şekilde bağımlıysanız (yararlı olmaya devam eden birkaç temel değeri kullanırken bile) yeni tarayıcı sürümlerinde kullanılacak yeni kullanıcı aracılarıyla test yapmanız önerilir. Yeni sürüme geçirilecek olan bu tarayıcılarla beta veya teknoloji önizleme derlemeleri aracılığıyla kendi başlarına ancak bir web sitesi için özel bir kullanıcı aracısı dizesi ayarlamak da teşvik etmek anlamına gelir. Chrome, Edge'de kullanıcı aracısı dizesini geçersiz kılabilir, Firefox ve Safari, yerel geliştirme yaparken, kodunuzun kullanıcılardan alabileceğiniz farklı kullanıcı aracısı değerleriyle nasıl ilişki kurduğunu kontrol etmek için kullanabilirsiniz.
İstemci İpuçları
Bu bilgileri sağlamanın önemli bir yolu Kullanıcı Aracısı İstemci İpuçları'dır ancak bu tüm tarayıcılarda desteklenmez. Desteklenen tarayıcılar üç başlık iletir: Sec-CH-UA
. Bu üstbilgi,
tarayıcının markası ve sürüm numarası; Sec-CH-UA-Mobile
: Bu değer, isteğin mobil cihazdan gelip gelmediğini gösterir. ve Sec-CH-UA-Platform
,
işletim sisteminin adını belirler. (Bu üstbilgilerin basit dizelerden ziyade yapılandırılmış üstbilgiler olması nedeniyle ayrıştırılması göründüğünden daha zordur. Bu durum, tarayıcıların "zorlu" değerler göndermesiyle zorunlu kılınmıştır. Bu değerler, düzgün şekilde ayrıştırılmazsa yanlış şekilde işlenir. Bu,
Tarayıcı tarafından önceden yapılan "fuzz testi" örneği. Bu veriler, yanlış veya tembel ayrıştırmanın muhtemelen kötü sonuçlar vereceği (ör. var olmayan markaların gösterilmesi veya düzgün şekilde kapanmayan dizelerin gösterilmesi) şekilde tasarlandığından, bu verileri kullanan geliştiricilerin verileri doğru şekilde işlemesi gerekir.) Neyse ki bu veriler tarayıcı tarafından JavaScript'e doğrudan
navigator.userAgentData
(destekleyici bir tarayıcıda şu nesneye benzer şekilde görünebilir):
{
"brands": [
{
"brand": " Not A;Brand",
"version": "99"
},
{
"brand": "Chromium",
"version": "96"
},
{
"brand": "Google Chrome",
"version": "96"
}
],
"mobile": false
}