Bu sayfada, Yönlendiren Politikanızı ve yönlendireni kullanır.
Özet
- Kaynaklar arası beklenmedik bilgi sızıntısı, web kullanıcılarına zarar verir gizlilik. CEVAP yönlendirenler politikası size yardımcı olabilir.
- Yönlendiren politikası olarak
strict-origin-when-cross-origin
ayarlayabilirsiniz. Google hatasını azaltırken yönlendirenin kullanışlılığının büyük bir kısmını korur. kaynaklar arası veri sızıntısı. - Siteler Arası İstek Sahtekarlığı (CSRF) koruması için yönlendirenler kullanmayın. Tekliflerinizi otomatikleştirmek ve optimize etmek için CSRF jetonları ek bir güvenlik katmanı olarak kullanabilirsiniz.
Yönlendiren ve Yönlendiren-Politika 101
HTTP isteklerinde isteğe bağlı bir Referer
üst bilgisi bulunabilir.
Bu değer, isteğin kaynak veya web sayfası URL'sini belirtir. İlgili içeriği oluşturmak için kullanılan
Referrer-Policy
üst bilgisi
Referer
başlığında hangi verilerin kullanıma sunulduğunu tanımlar.
Aşağıdaki örnekte Referer
üstbilgisi,
site-one
sitesindeki isteğin yapıldığı sayfa.
Referer
başlığı farklı istek türlerinde mevcut olabilir:
- Navigasyon isteklerinde (kullanıcı bir bağlantıyı tıkladığında).
- Tarayıcı; resim, iframe, komut dosyası ve gereken diğer kaynakları belirlemenize yardımcı olur.
Gezinmeler ve iframe'ler için bu verilere, aşağıdakileri kullanarak da JavaScript ile erişebilirsiniz:
document.referrer
Referer
değerlerinden birçok şey öğrenebilirsiniz. Örneğin, bir analiz hizmeti
bu verileri, site-two.example
sitesine gelen ziyaretçilerin% 50'sinin geldiğini belirlemek için kullanabilir
social-network.example
başlangıç fiyatıyla. Ancak yol ve
sorgu dizesinin kaynaklar genelinde Referer
içinde gönderilmesi kullanıcıları tehlikeye atabilir
ve güvenlik riskleri yaratabilir:
1 ile 5 arasındaki URL'ler gizli bilgiler içerir ve bazen bu kişisel verilerdir. Bu kaynakları kaynaklar arasında sessizce sızdırmak web kullanıcılarının gizlilik.
URL 6, bir özellik URL'sidir. Herhangi biri ancak amaçlanan kullanıcı bunu alırsa kötü niyetli bir kişi kontrolü ele geçirebilir. seçin.
Sitenizden gelen istekler için hangi yönlendiren verilerinin kullanılabileceğini kısıtlamak istiyorsanız bir yönlendiren politikası belirleyebilirsiniz.
Hangi politikalar mevcuttur ve aralarında ne gibi farklar vardır?
Sekiz politikadan birini seçebilirsiniz. Politikaya bağlı olarak, veriler
Referer
başlığından (ve document.referrer
) kullanılabilen aşağıdaki özellikler olabilir:
- Veri yok (
Referer
başlığı yok) - Yalnızca origin
- Tam URL: kaynak, yol ve sorgu dizesi
Bazı politikalar, bağlama bağlı olarak farklı davranışlar sergileyecek şekilde tasarlanmıştır: kaynaklar arası veya aynı kaynak isteği olup olmadığını kontrol edin. güvenli (veya her ikisi birden) olmalıdır. Bu, bilgi miktarını sınırlama konusunda faydalıdır kaynaklar arasında veya daha az güvenli kaynaklarda paylaşılırken zenginliği korur. bir örneğidir.
Aşağıdaki tabloda, yönlendiren politikalarının mevcut URL verilerini nasıl kısıtladığı gösterilmektedir
Yönlendiren başlığı ve document.referrer
bölümünden:
Politika kapsamı | Politika adı | Yönlendiren: Veri yok | Yönlendiren: Yalnızca kaynak | Yönlendiren: Tam URL |
---|---|---|---|---|
İstek bağlamını dikkate almaz | no-referrer |
çek | ||
origin |
çek | |||
unsafe-url |
çek | |||
Güvenlik odaklı | strict-origin |
HTTPS'den HTTP'ye istek | HTTPS'den HTTPS'ye veya HTTP'den HTTP'ye istek |
|
no-referrer-when-downgrade |
HTTPS'den HTTP'ye istek | HTTPS'den HTTPS'ye veya HTTP'den HTTP'ye istek |
||
Gizlilik odaklı | origin-when-cross-origin |
Kaynaklar arası istek | Aynı kaynaklı istek | |
same-origin |
Kaynaklar arası istek | Aynı kaynaklı istek | ||
Gizlilik ve güvenlik odaklı | strict-origin-when-cross-origin |
HTTPS'den HTTP'ye istek | Kaynaklar arası istek HTTPS'den HTTPS'ye veya HTTP'den HTTP'ye |
Aynı kaynaklı istek |
MDN, politikalar ve davranışların tam listesini örnekler.
Yönlendiren politikası belirlerken göz önünde bulundurmanız gereken bazı noktalar aşağıda belirtilmiştir:
- Şemayı (HTTPS ve HTTP) dikkate alan tüm politikalar
(
strict-origin
,no-referrer-when-downgrade
vestrict-origin-when-cross-origin
) bir HTTP kaynağından gelen istekleri işleme başka bir HTTP kaynağı, bir HTTPS kaynağından diğerine yapılan isteklerle aynı şekilde HTTP daha az güvenli olsa da HTTPS kaynağı. Çünkü bu kişiler için politikalarında önemli olan, güvenliğin eski sürüme geçirilmesi olup olmamasıdır; verileri İstek, şifrelenmiş bir kaynaktan şifrelenmemiş bir kaynaktaki verileri açığa çıkarabiliyorsa birincisi, HTTPS → HTTP isteklerinde gösterilir. HTTP → HTTP isteği tamamen şifrelenmemiş olduğundan eski sürüme geçiş yapılmaz. - Bir istek aynı kaynak olduğunda şema (HTTPS veya HTTP) aynı olduğundan güvenlik düzeyinin düşürülmesi söz konusu değildir.
Tarayıcılardaki varsayılan yönlendiren politikaları
Ekim 2021 itibarıyla
Herhangi bir yönlendiren politikası ayarlanmazsa tarayıcı kendi varsayılan politikasını kullanır.
Tarayıcı | Varsayılan Referrer-Policy / Davranış |
---|---|
Chrome |
Varsayılan değer: strict-origin-when-cross-origin .
|
Firefox |
Varsayılan değer: strict-origin-when-cross-origin .. 93 sürümünden itibaren için ne kadar az olduğuna göre, kısıtlayıcı yönlendiren politikaları no-referrer-when-downgrade ,
origin-when-cross-origin ve unsafe-url
siteler arası istekler için yoksayılır, yani yönlendiren her zaman kırpılır
web sitesinin politikasından bağımsız olarak siteler arası istekler.
|
Edge |
Varsayılan değer: strict-origin-when-cross-origin .
|
Safari |
Varsayılan değer strict-origin-when-cross-origin değerine benzer,
bazı farklılıklar olabilir. Görüntüleyin
Takibi Önleme Takibini Engelleme başlıklı makaleden ayrıntılı bilgi edinebilirsiniz.
|
Yönlendiren politikası ayarlamak için en iyi uygulamalar
Siteniz için yönlendiren politikaları belirlemenin farklı yolları vardır:
- HTTP başlığı olarak
- HTML
- İstek başına JavaScript'ten
Farklı sayfalar, istekler veya öğeler için farklı politikalar belirleyebilirsiniz.
Hem HTTP üstbilgisi hem de meta öğesi sayfa düzeyindedir. Öncelik sırası Bir elementin etkili politikasını belirlemek için şu adımları uygulayın:
- Öğe düzeyinde politika
- Sayfa düzeyinde politika
- Tarayıcı varsayılanı
Örnek:
index.html
:
<meta name="referrer" content="strict-origin-when-cross-origin" />
<img src="..." referrerpolicy="no-referrer-when-downgrade" />
Resim, no-referrer-when-downgrade
politikasıyla ve diğer tüm politikalarla istenir
Bu sayfadan gelen alt kaynak istekleri strict-origin-when-cross-origin
politikası.
Yönlendiren politikasını nasıl görebilirsiniz?
securityheaders.com sayesinde hangi web politikası.
Ayrıca Chrome, Edge veya Firefox'taki geliştirici araçlarını kullanarak
yönlendiren politikası. Bu yazının yazıldığı sırada Safari
Referrer-Policy
üstbilgisini göstermez, ancak Referrer-Policy
üstbilgisini gösteren Referer
gönderilir.
Web siteniz için hangi politikayı ayarlamanız gerekir?
Şunun gibi açık bir şekilde gizlilik artırıcı bir politika belirlemenizi öneririz:
strict-origin-when-cross-origin
(veya daha katı).
Neden "açıkça"?
Bir yönlendiren politikası ayarlamazsanız tarayıcının varsayılan politikası kullanılır. Hatta web siteleri çoğu zaman tarayıcı varsayılanına erteleyin. Ancak bu ideal değildir çünkü:
- Farklı tarayıcıların varsayılan politikaları farklıdır. Bu nedenle, siteniz, tarayıcılar genelinde tahmin edilebilir davranışlarda bulunmaz.
- Tarayıcılar,
strict-origin-when-cross-origin
gibi daha katı varsayılan ayarları benimsiyor. yönlendiren kırpma gibi mekanizmalar kontrol eder. Gizlilik geliştirici politikasını açık bir şekilde etkinleştirme değişiklikleri kontrol etmenizi sağlar ve gerçek zamanlı olarak testler yapmanıza yardımcı olur. yardımcı olur.
Neden strict-origin-when-cross-origin
(veya daha katı)?
Güvenli, gizliliği geliştiren ve faydalı bir politikaya ihtiyacınız var. Ne "faydalı"? anlamı, yönlendirenden ne istediğinize bağlıdır:
- Güvenli: Web siteniz HTTPS kullanıyorsa (değilse HTTPS kullanın)
öncelik) içeriyorsa web sitenizin URL'lerinin
HTTPS olmayan isteklerdir. Ağdaki herkes bunları görebildiğinden, sızıntılar
kullanıcılarınızı ortadaki kişi saldırılarına maruz bırakır. Politikalar
no-referrer-when-downgrade
,strict-origin-when-cross-origin
,no-referrer
, vestrict-origin
bu sorunu çözüyor. - Gizliliği artırma: Kaynaklar arası istek için
no-referrer-when-downgrade
Tam URL'yi paylaştığından gizlilik sorunlarına yol açabilir.strict-origin-when-cross-origin
vestrict-origin
yalnızca kaynağı paylaşır. veno-referrer
hiçbir şey paylaşmıyor. Bu dastrict-origin-when-cross-origin
,strict-origin
veno-referrer
: seçenekleri sunar. - Faydalı:
no-referrer
vestrict-origin
hiçbir zaman tam URL'yi paylaşmasa bile aynı kaynağa sahip istekler için de geçerlidir. Tam URL'ye ihtiyacınız varsastrict-origin-when-cross-origin
daha iyi bir seçenek olur.
Tüm bunlar, strict-origin-when-cross-origin
'in genellikle bir
mantıklı bir seçim.
Örnek: strict-origin-when-cross-origin
politikası ayarlama
index.html
:
<meta name="referrer" content="strict-origin-when-cross-origin" />
Alternatif olarak, sunucu tarafında, örneğin Express'te:
const helmet = require('helmet');
app.use(helmet.referrerPolicy({policy: 'strict-origin-when-cross-origin'}));
strict-origin-when-cross-origin
(veya daha katı kurallar) tüm kullanım alanlarınızı barındırmıyorsa ne olur?
Bu durumda progresif bir yaklaşım izleyin: Şu gibi koruyucu bir politika belirleyin:
Web siteniz için strict-origin-when-cross-origin
ve gerekirse daha fazla
belirli istekler veya HTML öğeleri için serbest politika.
Örnek: Öğe düzeyinde politika
index.html
:
<head>
<!-- document-level policy: strict-origin-when-cross-origin -->
<meta name="referrer" content="strict-origin-when-cross-origin" />
<head>
<body>
<!-- policy on this <a> element: no-referrer-when-downgrade -->
<a src="…" href="…" referrerpolicy="no-referrer-when-downgrade"></a>
<body></body>
</body>
</head>
</head>
Safari/WebKit, şunun için document.referrer
veya Referer
üstbilgisini sınırlandırabilir:
siteler arası istekler.
Ayrıntıları inceleyin.
Örnek: istek düzeyinde politika
script.js
:
fetch(url, {referrerPolicy: 'no-referrer-when-downgrade'});
Diğer nelere dikkat etmelisiniz?
Politikanız, sizin tarafınızdan belirlenen web sitenize ve kullanım alanlarına bağlı olmalıdır. bir arada kullanma fırsatınız olur. Bazı URL'lerde tanımlayıcı veya hassas veriler varsa Koruyucu bir politika belirleyebilirsiniz.
Gelen istekler için en iyi uygulamalar
Sitenizde yönlendiren URL'yi kullanıyorsanız yapmanız gerekenlere ilişkin bazı yönergeleri burada bulabilirsiniz: emin olun.
Kullanıcıların güvenliğini sağlama veri
Referer
gizli, kişisel veya tanımlayıcı veriler içerebilir. Bu nedenle
böyle değerlendiriyorsunuz.
Gelen yönlendirenler {referer-can-change} içeriğini değiştirebilir
Gelen kaynaklar arası isteklerden yönlendirenin kullanılmasıyla ilgili birkaç sınırlama vardır:
- İstek gönderenin uygulaması üzerinde herhangi bir denetime sahip değilseniz
Referer
başlığı (vedocument.referrer
) hakkında varsayımlarda bulunmalısınız. alabiliyorsunuz. İstek gönderen,no-referrer
politikasına geçmeye karar verebilir daha sıkı bir politika uygulamak zorunda kalabilir. yardımcı olur. Bu nedenle,Referer
uygulamasından geçmişe kıyasla daha az veri alacaksınız. - Tarayıcılar Yönlendiren Politikası'nı giderek daha fazla kullanıyor.
strict-origin-when-cross-origin
varsayılan olarak. Yani artık Google yerine sadece kaynak Gönderen site, gelen kaynaklar arası isteklerde tam yönlendiren URL'si politikası yok. - Tarayıcılar,
Referer
ürününü yönetme şeklini değiştirebilir. Örneğin, bazı tarayıcılarda geliştiriciler, kaynaklar arası kaynaklara yönlendiren yönlendirenleri her zaman kırpmaya karar verebilirler. alt kaynak istekleri hakkında bilgi edindiniz. Referer
başlığı (vedocument.referrer
) şundan daha fazla veri içerebilir: ihtiyacınız olacak. Örneğin, yalnızca bir açılış sayfasının istek, kaynaklar arası.
Referer
yerine alternatifler
Aşağıdaki durumlarda alternatifleri değerlendirmeniz gerekebilir:
- Sitenizin önemli bir özelliği, gelen kutunuzun yönlendiren URL'sini kaynaklar arası istekler.
- Siteniz artık kaynaklar arası istek. Bu durum, istek gönderen, politikası olmadığında veya tarayıcı varsayılanının politikası değiştiğinde (Chrome 85'teki gibi).
Alternatifleri tanımlamak için, önce yönlendirenin hangi bölümünü kullandığınızı analiz edin.
Yalnızca kaynağa ihtiyacınız varsa
- Yönlendireni, sayfaya üst düzey erişimi olan bir komut dosyasında kullanıyorsanız,
window.location.origin
alternatif bir yöntemdir. - Varsa
Origin
veSec-Fetch-Site
sizeOrigin
değerini vermeli veya isteğin kaynaklar arası olup olmadığını, ihtiyacınız olabilir.
URL'nin diğer öğelerine (yol, sorgu parametreleri...) ihtiyacınız varsa
- İstek parametreleri kullanım alanınıza hitap edebilir, bu da yönlendireni ayrıştırır.
- Yönlendireni, sayfaya üst düzey erişimi olan bir komut dosyasında kullanıyorsanız,
Alternatif olarak
window.location.pathname
çalışabilir. Yalnızca yolu ayıkla bölümüne ekleyin ve bunu bir bağımsız değişken olarak iletin. Böylece, URL parametrelerindeki bilgiler aktarılmaz.
Bu alternatifleri kullanamıyorsanız:
- Sistemlerinizi, istek göndereni bekleyecek şekilde değiştirip değiştiremeyeceğinizi kontrol edin
(örneğin,
site-one.example
) ekleyebilirsiniz. yapılandırma söz konusu.- Artısı:
site-one.example
kullanıcıları için daha müstehcen, gizliliği daha fazla korumaya yönelik, elde edebiliyorlar. - Dezavantajı: Sizin veya sisteminizin kullanıcılarının daha fazla iş yapmasını sağlayabilirsiniz.
- Artısı:
- İstekleri gönderen sitenin bir
veya istek başına Yönlendiren Politikası için
no-referrer-when-downgrade
kullanın.- Dezavantaj:
site-one.example
kullanıcıları için gizliliği daha az korumaya sahip olma, tüm tarayıcılarda desteklenmeyebilir.
- Dezavantaj:
Siteler Arası İstek Sahtekarlığı (CSRF) koruması
İstek gönderen her zaman bir
no-referrer
politikası ihlal edilirse ve kötü niyetli kişiler yönlendirenin adresini taklit edebilir.
CSRF jetonlarını kullanma
birincil korumanız olarak belirleyin. Daha fazla koruma için
SameSite ve
yerine Referer
yerine
Origin
(POST ve CORS isteklerinde kullanılabilir) ve
Sec-Fetch-Site
kullanılabiliyorsa.
Günlüğe kaydetme ve hata ayıklama
verilerin gizlilikle ilgili olduğunu
Referer
Yalnızca kaynağı kullanıyorsanız
Origin
üstbilgisi şu şekilde:
bir alternatif. Bu sayede, hata ayıklama için gereken bilgileri elde edebilirsiniz
bunu daha basit bir şekilde yapabilir ve yönlendireni ayrıştırmanıza gerek kalmaz.
Ödemeler
Ödeme sağlayıcılar, gelen isteklerin Referer
başlığını kullanabilir.
güvenlik kontrolleri.
Örneğin:
- Kullanıcı
online-shop.example/cart/checkout
sitesinde Satın al düğmesini tıklar. online-shop.example
, şuraya yönlendirir:payment-provider.example
belirtir.payment-provider.example
, bu isteğinReferer
değerini bir listeyle karşılaştırarak kontrol eder (satıcılar tarafından belirlenen izin verilenReferer
değeri) Herhangi bir listeye girdiğindepayment-provider.example
isteği reddeder. Uyuyorsa kullanıcı işleme devam edebilir.
Ödeme akışı güvenlik kontrolleri için en iyi uygulamalar
Ödeme sağlayıcı olarak, bazı ödemelerle ilgili temel kontrol olarak Referer
kullanabilirsiniz.
anlamına gelir. Ancak Referer
başlığı tek başına şunun için güvenilir bir temel değildir:
kontrol. İstekte bulunan site, meşru bir satıcı olup olmadığına bakılmaksızın,
no-referrer
politikası, Referer
ödeme sağlayıcı
Referer
incelendikten sonra ödeme sağlayıcılar,
no-referrer
politikası belirlenmedi. İlk kontrol olarak Referer
kullanırsanız:
Referer
öğesinin her zaman mevcut olmasını beklemeyin. Varsa kontrol edin kaynak olan minimum verilerle karşılaştırarak değerlendirir.- İzin verilen
Referer
değerleri listesini ayarlarken, yalnızca şunları eklediğinizden emin olun: kaynak gösterilir, yol belirtmez. - Örneğin,
online-shop.example
için izin verilenReferer
değerleri şu şekilde olmalıdır:online-shop.example/cart/checkout
değil,online-shop.example
. Bekleme süresi: ya hiçReferer
yok ya da yalnızca istekte bulunan birReferer
değeri varsayımlarda bulunmaktan kaynaklanabilecek hataları önleyerek satıcınınReferrer-Policy
cihazı hakkında.
- İzin verilen
Referer
yoksa veya mevcutsa ve temelReferer
kaynağınız başarılı olursa daha güvenilir olmayan başka bir doğrulama yöntemidir.
Ödemeleri daha güvenilir şekilde doğrulamak için istekte bulunan tarafın istek parametrelerine karma oluşturma işlemi uygulamak için benzersiz bir anahtar kullanın. Ödeme sağlayıcılar daha sonra aynı karmayı sizin tarafınızda hesaplayabilir ve isteği yalnızca hesaplamanızla eşleşiyorsa kabul edin.
Yönlendireni olmayan bir HTTP satıcı sitesi olduğunda Referer
öğesine ne olur?
bir HTTPS ödeme sağlayıcıya yönlendirmesi durumunda ne yapmanız gerekir?
HTTPS ödeme sağlayıcıya yapılan istekte Referer
görünmüyor. Bunun nedeni:
çoğu tarayıcı, strict-origin-when-cross-origin
veya
Bir web sitesinde politika ayarlanmamışsa varsayılan olarak no-referrer-when-downgrade
.
Chrome'un yeni bir varsayılan politikayla değiştirilmesi
bu davranışı değiştirmeyecek.
Sonuç
Koruyucu bir yönlendiren politikası, kullanıcılarınıza daha fazla gizlilik sağlamanın harika bir yoludur.
Kullanıcılarınızı korumaya yönelik farklı teknikler hakkında daha fazla bilgi edinmek için Güvenli ve güvenilir veri toplama
Kaynaklar
- "Aynı site"yi anlama ve "same-origin"
- Yeni güvenlik başlığı: Yönlendiren Politikası (2017)
- Yönlendiren-Politikası: MDN
- Yönlendiren başlık: gizlilik ve güvenlikle ilgili endişeler MDN
- Chrome değişikliği: Niyeti uygulayın
- Chrome değişikliği: Niyeti gemi
- Chrome değişikliği: durum girişi
- Chrome değişikliği: 85 beta blogpost
- Yönlendiren GitHub ileti dizisini kırpma: hangi farklı tarayıcılar? yapın
- Yönlendiren-Politika Spesifikasyonu
Tüm yorumculara, özellikle de Kaustubha Govind'e, katkıları ve geri bildirimleri için David Van Cleve, Mike West, Sam Dutton, Rowan Merewood, Jxck ve Kayce Basques.