Güvenlik ihlallerini, desteği sonlandırılan API çağrılarını ve daha fazlasını izlemek için Reporting API'yi kullanın.
Bazı hatalar yalnızca üretimde ortaya çıkar. Bu etkinlikleri yerel olarak veya gerçek kullanıcılar, gerçek ağlar ve gerçek cihazlar ve oyunu değiştireceksiniz. Reporting API bu hatalardan bazılarını yakalamaya yardımcı olur: veya desteği sonlandırılmış ve yakında sonlandırılacak API gibi durumlarda arama yapar ve bunları izlediğiniz bir uç noktaya iletir. belirtiliyor.
HTTP üst bilgileri aracılığıyla neleri izlemek istediğinizi belirtmenizi sağlar ve tarayıcı tarafından işletilir.
Reporting API'yi ayarladığınızda, kullanıcılar bir sorun yaşadığında bilgi edinmiş olursunuz ve onları nasıl düzeltebilirsiniz?
Bu yayında, bu API'nin neler yapabileceği ve nasıl kullanılacağı açıklanmaktadır. Haydi başlayalım.
Demo ve kod
Reporting API'nin işleyiş şeklini Chrome 96 ve daha yeni sürümler (Chrome (Ekim 2021 itibarıyla) Beta veya Canary.
Genel Bakış
site.example
sitenizin İçerik Güvenliği Politikası ve Doküman Politikası olduğunu varsayalım. Bunların ne işe yaradığını bilmiyor musunuz? Sorun değil,
anlayabildiğimi umuyorum.
Sitenizi, bu politikaların ne zaman ihlal edildiğini öğrenmek için izlemeye karar verirsiniz. kod tabanınızın kullanıyor olabileceği desteği sonlandırılan veya yakında desteği sonlandırılacak API'lere dikkat etmeniz önerilir.
Bunun için bir Reporting-Endpoints
üstbilgisi yapılandırır ve bu uç noktayı eşlersiniz
adlarını report-to
yönergesi aracılığıyla kullanabilirsiniz.
Reporting-Endpoints: main-endpoint="https://reports.example/main", default="https://reports.example/default"
# Content-Security-Policy violations and Document-Policy violations
# will be sent to main-endpoint
Content-Security-Policy: script-src 'self'; object-src 'none'; report-to main-endpoint;
Document-Policy: document-write=?0; report-to=main-endpoint;
# Deprecation reports don't need an explicit endpoint because
# these reports are always sent to the `default` endpoint
Öngörülemeyen durumlar olur ve bu politikalar, yardımcı olur.
Örnek ihlaller
index.html
<script src="script.js"></script>
<!-- CSP VIOLATION: Try to load a script that's forbidden as per the Content-Security-Policy -->
<script src="https://example.com/script.js"></script>
script.js
, yükleyen: index.html
// DOCUMENT-POLICY VIOLATION: Attempt to use document.write despite the document policy
try {
document.write('<h1>hi</h1>');
} catch (e) {
console.log(e);
}
// DEPRECATION: Call a deprecated API
const webkitStorageInfo = window.webkitStorageInfo;
Tarayıcı bir İGP ihlal raporu, Doküman-Politika ihlali raporu ve desteğin sonlandırılmasını oluşturur bir rapor oluşturmanız gerekir.
Tarayıcı, bir dakika kadar kısa bir gecikmeyle raporları bu ihlal türü için yapılandırılmış uç noktadır. Raporlar, bant dışı (sunucunuz veya siteniz tarafından değil).
Uç noktalar bu raporları alır.
Artık bu uç noktalarla ilgili raporlara erişebilir ve hataları takip edebilirsiniz. Kullanıcılarınızı etkileyen sorunu gidermeye başlamak için hazırsınız.
Örnek rapor
{
"age": 2,
"body": {
"blockedURL": "https://site2.example/script.js",
"disposition": "enforce",
"documentURL": "https://site.example",
"effectiveDirective": "script-src-elem",
"originalPolicy": "script-src 'self'; object-src 'none'; report-to main-endpoint;",
"referrer": "https://site.example",
"sample": "",
"statusCode": 200
},
"type": "csp-violation",
"url": "https://site.example",
"user_agent": "Mozilla/5.0... Chrome/92.0.4504.0"
}
Kullanım alanları ve rapor türleri
Reporting API, birçok ilginç uyarı veya sorunu izlemenize yardımcı olacak şekilde yapılandırılabilir. en az ne kadar geçtiğine dikkat edin:
Rapor türü | Bir raporun oluşturulacağı durum örneği |
---|---|
İGP ihlali (yalnızca 3. Düzey) | Sayfalarınızdan birinde Content-Security-Policy (İGP) ayarladınız ama sayfa, İGP'niz tarafından izin verilmeyen bir komut dosyası yüklemeye çalışıyor. |
COOP ihlali | Bir sayfada Cross-Origin-Opener-Policy ayarladınız ancak kaynaklar arası pencere, dokümanla doğrudan etkileşim kurmaya çalışıyor. |
COEP ihlali | Bir sayfada Cross-Origin-Embedder-Policy ayarladınız ancak doküman, kaynaklar arası dokümanlar tarafından yüklenmeyi kabul etmeyen bir çapraz kaynak iframe içeriyor. |
Doküman Politikası ihlali | Sayfada document.write kullanımını engelleyen bir doküman politikası var ancak bir komut dosyası document.write işlevini çağırmaya çalışıyor. |
İzin politikasının ihlali | Sayfada, mikrofon kullanımını engelleyen bir izin politikası ve ses girişi isteyen bir komut dosyası bulunuyor. |
Kullanımdan kaldırma uyarısı | Sayfa, desteği sonlandırılmış veya artık kaldırılacak bir API kullanıyordur; veya üst düzey bir üçüncü taraf komut dosyası aracılığıyla çağrıda bulunur. |
Müdahale | Sayfa, güvenlik, performans veya kullanıcı deneyimi nedeniyle tarayıcının dikkate almamaya karar verdiği bir şey yapmaya çalışıyor. Chrome'daki örnek: Sayfa yavaş ağlarda document.write kullanıyor veya kullanıcının henüz etkileşimde bulunmadığı bir çapraz kaynak çerçevesinde navigator.vibrate çağrısı yapıyor. |
Kaza | Siteniz açıkken tarayıcı kilitlenir. |
Raporlar
Raporlar nasıl görünür?
Tarayıcı, raporları, yapılandırdığınız uç noktaya gönderir. Aşağıdaki gibi görünen istekler gönderir:
POST
Content-Type: application/reports+json
Bu isteklerin yükü raporlar listesidir.
Örnek rapor listesi
[
{
"age": 420,
"body": {
"columnNumber": 12,
"disposition": "enforce",
"lineNumber": 11,
"message": "Document policy violation: document-write is not allowed in this document.",
"policyId": "document-write",
"sourceFile": "https://site.example/script.js"
},
"type": "document-policy-violation",
"url": "https://site.example/",
"user_agent": "Mozilla/5.0... Chrome/92.0.4504.0"
},
{
"age": 510,
"body": {
"blockedURL": "https://site.example/img.jpg",
"destination": "image",
"disposition": "enforce",
"type": "corp"
},
"type": "coep",
"url": "https://dummy.example/",
"user_agent": "Mozilla/5.0... Chrome/92.0.4504.0"
}
]
Bu raporların her birinde bulabileceğiniz veriler aşağıda açıklanmıştır:
Alan | Açıklama |
---|---|
age |
Raporun zaman damgası ile geçerli zaman arasındaki milisaniye sayısı. |
body |
JSON dizesi olarak serileştirilmiş gerçek rapor verileri. Bir raporun body öğesinde yer alan alanlar, raporun type parametresiyle belirlenir. ⚠️ Farklı türlerdeki raporların farklı gövdeleri vardır.
Her rapor türünün tam gövdesini görmek için demo raporlama uç noktasına göz atın ve örnek raporlar oluşturma talimatlarını izleyin. |
type |
Bir rapor türü (örneğin, csp-violation veya coep ). |
url |
Raporun oluşturulduğu belgenin veya çalışanın adresi. Kullanıcı adı, şifre ve parça gibi hassas veriler bu URL'den çıkarılır. |
user_agent |
Raporun oluşturulduğu isteğin User-Agent başlığı. |
Kimlik bilgisili raporlar
Raporu oluşturan sayfayla aynı kaynağa sahip raporlama uç noktaları kimlik bilgilerini alır (çerezler) tanımlamasına olanak tanır.
Yeterlilik belgeleri, rapor hakkında faydalı ek bilgiler sağlayabilir; şunun için: Örneğin, belirli bir kullanıcı hesabının sürekli olarak hata tetikleyip tetiklemediği veya belirli bir sıralamanın oranında işlem, bu sayfada bir raporu tetikliyor.
Tarayıcı, raporları ne zaman ve nasıl gönderir?
Raporlar, sitenizden bant dışında sunulur: Tarayıcı, ne zaman yapılandırılmış uç noktalara gönderilirler. Ayrıca ne zaman ne zaman tarayıcı raporlar gönderir; yakalar, sıraya sokar ve e-postaları otomatik olarak zaman alabilir.
Bu, Reporting API'yi kullanırken performansla ilgili endişenin çok az olduğu veya hiç olmadığı anlamına gelir.
Raporları toplu olarak gönderme olasılığını artırmak için raporlar bir dakikaya kadar gecikmeli gönderilir. Bu, özellikle de kullanıcının ağ bağlantısına saygılı bir şekilde, bant genişliğinden önemli hale geldi. Tarayıcı, daha yüksek öncelikli işlemeyle meşgul olduğunda da teslimi geciktirebilir. veya kullanıcı o sırada yavaş ve/veya sıkışık bir ağdaysa kullanılabilir.
Üçüncü taraf ve birinci taraf sorunları
Sayfanızda gerçekleşen ihlaller veya desteği sonlandırma işlemleri nedeniyle oluşturulan raporlar gönderilir uç noktalara gönderir. Buna üçüncü taraf komut dosyaları tarafından yapılan ihlaller dahildir yardımcı olur.
Sayfanıza yerleştirilmiş kaynaklar arası iframe'de gerçekleşen ihlaller veya desteği sonlandırmalar uç noktalarınıza raporlanmaz (en azından varsayılan olarak raporlanmaz). Bir iframe, kendi kendini raporlama hizmetine ve hatta sitenizin (birinci tarafın) raporlama hizmetine raporlama işlevini yerine getirmeniz gerekir; ama bu kadar bunu da kullanabilirsiniz. Ayrıca çoğu raporun yalnızca sayfanın politikası ihlal edildiğinde oluşturulduğunu unutmayın. ve sayfanızın politikaları ile iframe politikalarının farklı olduğunu unutmayın.
Desteği sonlandırmayla ilgili örnek
Tarayıcı desteği
Aşağıdaki tabloda Reporting API v1 için tarayıcı desteği özetlenmiştir.
Reporting-Endpoints
üstbilgisi. Reporting API v0 (Report-To
üstbilgisi) için tarayıcı desteği
aynı, bir rapor türü hariç: Ağ Hatası Günlüğü, yeni Reporting API'de desteklenmemektedir.
Ayrıntılar için taşıma rehberini okuyun.
Rapor türü | Chrome | Chrome iOS | Safari | Firefox | Edge |
---|---|---|---|---|---|
İGP ihlali (yalnızca 3. düzey)* | ✔ Evet | ✔ Evet | ✔ Evet | ✘ Hayır | ✔ Evet |
Ağ Hatası Günlük Kaydı | ✘ Hayır | ✘ Hayır | ✘ Hayır | ✘ Hayır | ✘ Hayır |
COOP/COEP ihlali | ✔ Evet | ✘ Hayır | ✔ Evet | ✘ Hayır | ✔ Evet |
Diğer tüm türler: Belge Politikası ihlali, Kullanımdan Kaldırma, Müdahale, Kilitlenme | ✔ Evet | ✘ Hayır | ✘ Hayır | ✘ Hayır | ✔ Evet |
Bu tabloda yalnızca yeni Reporting-Endpoints
başlığıyla report-to
desteği özetlenmektedir. Reporting-Endpoints
hizmetine geçmek istiyorsanız İGP raporlarını taşımayla ilgili ipuçlarını okuyun.
Reporting API'yi kullanma
Raporların nereye gönderileceğine karar verme
Bunun için iki seçeneğiniz bulunmaktadır:
- Raporları mevcut bir rapor toplayıcı hizmetine gönderin.
- Raporları, kendi oluşturduğunuz ve işlettiğiniz bir rapor toplayıcıya gönderin.
1. Seçenek: Mevcut bir rapor toplayıcı hizmetini kullanma
Rapor toplayıcı hizmetlerine bazı örnekler:
Başka çözümler biliyorsanız bize bildirmek için bir sorun açın, bu yayını güncelleriz!
Rapor toplayıcı seçerken fiyatlandırmanın yanı sıra aşağıdaki noktaları da göz önünde bulundurun: 🧐
- Bu toplayıcı tüm rapor türlerini destekliyor mu? Örneğin, tüm raporlama uç noktası çözümleri COOP/COEP raporlarını destekler.
- Uygulamanızın URL'lerinden herhangi birini üçüncü taraf rapor toplayıcıyla rahatça paylaşabiliyor musunuz? Tarayıcı bu URL'lerden hassas bilgileri çıkarsa bile hassas bilgiler bu şekilde sızdırılabilir. Bu işlem, kendi raporlama uç noktanızı çalıştırın.
2. Seçenek: Kendi rapor toplayıcınızı oluşturun ve çalıştırın
Rapor alan kendi sunucunuzu oluşturmak çok basit değildir. Başlamak için bize çatallanır, hafif ortak metin. Express ile oluşturulmuştur ve raporları alıp görüntüleyebilir.
Ortak rapor toplayıcıya gidin.
Projeyi düzenlenebilir hale getirmek için Düzenlemek için Remiks'i tıklayın.
Artık klonunuz var! Kendi amaçlarınıza göre özelleştirebilirsiniz.
Ortak metni kullanmıyorsanız ve kendi sunucunuzu sıfırdan oluşturuyorsanız:
- Raporların tanınması için
Content-Type
değeriapplication/reports+json
olanPOST
isteklerini kontrol edin isteklerin uç noktanıza gönderilmesine olanak tanır. - Uç noktanız sitenizden farklı bir kaynakta çalışıyorsa CORS ön kontrol isteklerini desteklediğinden emin olun.
3. Seçenek: 1. ve 2. Seçeneği birleştirme
Belirli bir sağlayıcının bazı rapor türleriyle ilgilenmesine izin vermek isteyebilirsiniz, ancak bunu yaparken şirket içinde de bir çözüm üretmeyi başardık.
Bu durumda, birden fazla uç noktayı aşağıdaki gibi ayarlayın:
Reporting-Endpoints: endpoint-1="https://reports-collector.example", endpoint-2="https://my-custom-endpoint.example"
Reporting-Endpoints
başlığını yapılandırma
Reporting-Endpoints
yanıt başlığı ayarlayın. Değeri bir veya virgülle ayrılmış bir dizi olmalıdır
anahtar/değer çiftleri:
Reporting-Endpoints: main-endpoint="https://reports.example/main", default="https://reports.example/default"
Eski Reporting API'den yeni Reporting API'ye geçiş yapıyorsanız
Reporting-Endpoints
ve Report-To
ikisini de ayarlayın. Taşıma rehberinde ayrıntılı bilgi bulabilirsiniz. Özellikle de raporlama sistemini kullanıyorsanız
Content-Security-Policy
ihlali yalnızca report-uri
yönergesiyle ihlal edilmişse İGP raporlaması için taşıma adımlarını kontrol edin.
Reporting-Endpoints: main-endpoint="https://reports.example/main", default="https://reports.example/default"
Report-To: ...
Anahtarlar (uç nokta adları)
Her tuş, main-endpoint
veya endpoint-1
gibi istediğiniz bir ad olabilir.
Farklı raporlar için farklı adlandırılmış uç noktalar ayarlamaya karar verebilirsiniz
türler (örneğin, my-coop-endpoint
, my-csp-endpoint
). Böylece,
raporları, türlerine bağlı olarak farklı uç noktalara yönlendirebilir.
Müdahale, kullanımdan kaldırma ve/veya çökme almayı istiyorsanız
default
adlı bir uç nokta ayarlayın.
Reporting-Endpoints
üstbilgisi hiçbir default
uç noktası tanımlamıyorsa bu türdeki raporlar gönderilmez (yine de bu tür raporlar oluşturulur).
Değerler (URL'ler)
Her değer, raporların gönderileceği, seçtiğiniz bir URL'dir. URL 1. Adım'da belirlediğiniz karara bağlıdır.
Uç nokta URL'si:
- Eğik çizgiyle (
/
) başlamalıdır. Göreli yollar desteklenmez. - Kökler arası olabilir. Ancak bu durumda kimlik bilgileri raporlarla birlikte gönderilmez.
Örnekler
Reporting-Endpoints: my-coop-endpoint="https://reports.example/coop", my-csp-endpoint="https://reports.example/csp", default="https://reports.example/default"
Ardından, adlandırılmış her uç noktayı uygun politikada veya tek bir Tüm politikalarda tek bir uç nokta.
Üstbilgi nereye ayarlanır?
Yeni Reporting API'de, bu kılavuzda ele alınan
post- raporlar, dokümanlar kapsamında değerlendirilir. Bu, tek bir veri türü için
kaynak, farklı dokümanlar, örneğin site.example/page1
ve
site.example/page2
, farklı uç noktalara rapor gönderebilir.
Hesabınızın herhangi bir sayfasındaki ihlaller veya desteği sonlandırmalarla ilgili rapor almak için kullanıyorsanız, üstbilgiyi tüm yanıtlarda ara katman yazılımı olarak ayarlayın.
Aşağıda Express'ten bir örnek verilmiştir:
const REPORTING_ENDPOINT_BASE = 'https://report.example';
const REPORTING_ENDPOINT_MAIN = `${REPORTING_ENDPOINT_BASE}/main`;
const REPORTING_ENDPOINT_DEFAULT = `${REPORTING_ENDPOINT_BASE}/default`;
app.use(function (request, response, next) {
// Set up the Reporting API
response.set(
'Reporting-Endpoints',
`main-endpoint="${REPORTING_ENDPOINT_MAIN}", default="${REPORTING_ENDPOINT_DEFAULT}"`,
);
next();
});
Politikalarınızı düzenleme
Reporting-Endpoints
üstbilgisi yapılandırıldığına göre artık bir report-to
ekleyin.
ihlalini almak istediğiniz her bir politika başlığına yönerge
raporlar. report-to
değeri, ayarladığınız adlandırılmış uç noktalardan biri olmalıdır
yapılandırıldı.
Birden çok politika için çoklu uç noktayı veya farklı ve uç noktalarda kod yazmaktır.
Kullanımdan kaldırma, müdahale ve kilitlenme için report-to
gerekli değildir
raporlar. Bu raporlar herhangi bir politikaya bağlı değildir. Oluşturulması koşuluyla
bir default
uç noktası ayarlanır ve bu default
uç noktasına gönderilir.
Örnek
# Content-Security-Policy violations and Document-Policy violations
# will be sent to main-endpoint
Content-Security-Policy: script-src 'self'; object-src 'none'; report-to main-endpoint;
Document-Policy: document-write=?0;report-to=main-endpoint;
# Deprecation reports don't need an explicit endpoint because
# these reports are always sent to the default endpoint
Örnek kod
Tüm bunları bağlam içinde görmek için aşağıda, Express kullanan bir Düğüm sunucusu örneği gösterilmektedir ve bu makalede ele alınan tüm parçaları bir araya getirir. Bu projede Raporlamayı birkaç farklı rapor türü için yapılandırın ve sonuçları görüntüleyin.
Raporlama ayarlarınızdaki hataları ayıklama
Raporları bilinçli olarak oluşturma
Reporting API'yi kurarken büyük olasılıkla sorunları kasıtlı olarak ihlal etmeniz gerekir. politikalarınızı inceleyerek raporların beklendiği gibi oluşturulup gönderilmediğini kontrol edin. Politikaları ihlal eden ve her tür raporu oluşturmak için demoya göz atın.
Zamandan kazanın
Raporlar yaklaşık bir dakika, yani uzun bir gecikmeyle gönderilebilir.
dikkat edin. ↗ Neyse ki, Chrome'da hata ayıklama sırasında bayrağı kullanabilirsiniz.
Raporları oluşturuldukları anda almak için --short-reporting-delay
.
Bu işareti açmak için terminalinizde şu komutu çalıştırın:
YOUR_PATH/TO/EXECUTABLE/Chrome --short-reporting-delay
Geliştirici Araçları'nı kullanma
Chrome'da, gönderilen veya gönderilecek raporları görmek için Geliştirici Araçları'nı kullanın.
Ekim 2021 itibarıyla bu özellik deneme aşamasındadır. Kullanmak için aşağıdaki adımları izleyin:
- Chrome 96 ve daha yeni sürümlerini kullanın (tarayıcınıza
chrome://version
yazarak kontrol edin) - Chrome'un URL çubuğuna
chrome://flags/#enable-experimental-web-platform-features
yazın veya yapıştırın. - Etkin'i tıklayın.
- Tarayıcınızı yeniden başlatın.
- Chrome Geliştirici Araçları'nı açın.
- Chrome Geliştirici Araçları'nda Ayarlar'ı açın. Denemeler bölümünde, Uygulama paneline gidin.
- Geliştirici Araçları'nı yeniden yükleyin.
- Sayfanızı yeniden yükleyin. Geliştirici Araçları'nın açık olduğu sayfa tarafından oluşturulan raporlar "Chrome Geliştirici Araçları" Raporlama API'si altındaki Uygulama panelinde görünür.
Rapor durumu
Durum sütunu, bir raporun başarıyla gönderilip gönderilmediğini gösterir.
Durum | Açıklama |
---|---|
Success |
Tarayıcı raporu gönderdi ve uç nokta bir başarı koduyla (200 veya başka bir başarılı yanıt kodu 2xx ) yanıt verdi. |
Pending |
Tarayıcı şu anda raporu göndermeyi deniyor. |
Queued |
Rapor oluşturuldu ve tarayıcı şu anda raporu göndermeye çalışmıyor. Aşağıdaki iki durumdan birinde rapor Queued olarak görünür:
|
MarkedForRemoval |
Tarayıcı, bir süre yeniden denedikten sonra (Queued ) raporu göndermeyi durdurdu ve kısa süre içinde raporu gönderilecek raporlar listesinden kaldıracak. |
Raporlar, başarıyla gönderilip gönderilmediklerinden bağımsız olarak bir süre sonra kaldırılır.
Sorun giderme
Raporlar uç noktanıza beklendiği gibi oluşturulmuyor veya gönderilmiyor mu? Aşağıda bu sorunu gidermek için birkaç ipucu verilmiştir.
Raporlar oluşturulmaz
Geliştirici Araçları'nda gösterilen raporlar doğru şekilde oluşturulmuştur. Beklediğiniz rapor bu listede görünmüyorsa:
- Politikalarınızda
report-to
bölümünü kontrol edin. Bu yapılandırma yanlışsa oluşturulmaz. Aşağıdakileri yapmak için Politikalarınızı düzenleme bölümüne gidin. bu sorunu düzelt. Bu sorunu gidermenin diğer bir yolu da Chrome'daki Geliştirici Araçları konsolunu kontrol etmektir: konsolda, beklediğiniz ihlalle ilgili bir hata görünüyorsa bu, politikanızın büyük olasılıkla yapılandırdığınızdan emin olun. - Yalnızca Geliştirici Araçları'nın açık olduğu doküman için oluşturulan raporların,
görünür. Örnek:
site1.example
siteniz bir iFramesite2.example
yerleştirirse ve dolayısıyla rapor oluşturursa bu rapor, Geliştirici Araçları'nda yalnızca iframe'i kendi penceresinde açın ve bu pencere için Geliştirici Araçları'nı açın.
Raporlar oluşturuluyor ancak gönderilmiyor veya alınmıyor
Geliştirici Araçları'nda bir rapor görebiliyorsanız ancak uç noktanız raporu almıyorsa ne olur?
- Kısa gecikmelere dikkat edin. Bir raporu görememenizin nedeni, henüz gönderilmedi!
Reporting-Endpoints
üstbilgisi yapılandırmanızı kontrol edin. Konuyla ilgili bir sorun varsa bu durumu değeri gönderilmez. Geliştirici Araçları'nda raporun durumuQueued
(Pending
noktasına atlayabilir ve ardından teslimat girişimi olduğunda hızlı bir şekildeQueued
konumuna geri dönebilir) unutmayın. Bu duruma neden olabilecek bazı yaygın hatalar şunlardır:Uç nokta kullanılıyor ancak yapılandırılmadı. Örnek:
Document-Policy: document-write=?0;report-to=endpoint-1; Reporting-Endpoints: default="https://reports.example/default"
default
uç noktası eksik. Desteğin sonlandırılması ve müdahale gibi bazı rapor türleri yalnızcadefault
adlı uç noktaya gönderilir. Daha fazla bilgi için Raporlama Uç Noktaları başlığını yapılandırma bölümüne bakın.Politika başlıklarının söz diziminde, tırnak işareti eksikliği gibi sorunları arayın. Ayrıntıları inceleyin.
Uç noktanızın gelen istekleri işleyebildiğinden emin olun.
Uç noktanızın, CORS ön kontrol isteklerini desteklediğinden emin olun. Aksi takdirde raporları alamaz.
Uç noktanızın davranışını test edin. Bunu yapmak için uç nokta isteklerinize görünür göndererek tarayıcı emülasyonu yapabilirsiniz. bir uyarı oluşturacağız. Aşağıdaki komutu çalıştırın:
curl --header "Content-Type: application/reports+json" \ --request POST \ --data '[{"age":420,"body":{"columnNumber":12,"disposition":"enforce","lineNumber":11,"message":"Document policy violation: document-write is not allowed in this document.","policyId":"document-write","sourceFile":"https://dummy.example/script.js"},"type":"document-policy-violation","url":"https://dummy.example/","user_agent":"xxx"},{"age":510,"body":{"blockedURL":"https://dummy.example/img.jpg","destination":"image","disposition":"enforce","type":"corp"},"type":"coep","url":"https://dummy.example/","user_agent":"xxx"}]' \ YOUR_ENDPOINT
Uç noktanız, bir başarı koduyla (
200
veya başka bir başarı yanıt kodu2xx
) yanıt vermelidir. Eşleşmezse yapılandırmasıyla ilgili bir sorun var.
İlgili bildirme mekanizmaları
Yalnızca Rapor
-Report-Only
politika başlıkları ve Reporting-Endpoints
birlikte çalışır.
Reporting-Endpoints
içinde yapılandırılan ve report-to
alanında belirtilen uç noktalar
Content-Security-Policy
,
Cross-Origin-Embedder-Policy
ve
Cross-Origin-Opener-Policy
, bu politikalar ihlal edildiğinde rapor alacak.
Reporting-Endpoints
içinde yapılandırılan uç noktalar,
report-to
alanı
Content-Security-Policy-Report-Only
,
Cross-Origin-Embedder-Policy-Report-Only
ve
Cross-Origin-Opener-Policy-Report-Only
.
Ayrıca, bu politikalar ihlal edildiğinde de bildirim alırlar.
Raporlar her iki durumda da gönderilirken, -Report-Only
başlıkları
politika: hiçbir şey bozulmaz ya da engellenmez, ancak bu
nelerin bozulacağı veya engelleneceği ile ilgili raporlar.
ReportingObserver
ReportingObserver
JavaScript API size yardımcı olabilir
ancak istemci taraflı uyarıları görebilirsiniz.
ReportingObserver
ve Reporting-Endpoints
üstbilgisi, aşağıdakilerin durumunu gösteren raporlar oluşturur:
aynı görünür ancak biraz farklı kullanım alanları sağlar.
Aşağıdaki durumlarda ReportingObserver
kullanın:
- Yalnızca desteği sonlandırmaları ve/veya tarayıcı müdahalelerini izlemek istiyorsanız.
ReportingObserver
, kullanımdan kaldırma gibi istemci tarafı uyarıları gösterir. tarayıcı müdahaleleridir, ancakReporting-Endpoints
'in aksine CSP veya COOP/COEP ihlalleri gibi diğer türden raporları yakalamanız gerekir. - Bu ihlallere anlık olarak yanıt vermeniz gerekir.
ReportingObserver
yapar bir ihlal etkinliğine geri çağırma eklemek mümkündür. - Hata ayıklamaya yardımcı olması için rapora ek bilgiler eklemek özel geri arama aracılığıyla.
Diğer bir fark da ReportingObserver
ürününün yalnızca istemci tarafında yapılandırılmış olmasıdır:
sunucu tarafı üstbilgiler üzerinde denetim sahibi olmasanız ve
Reporting-Endpoints
ayarla.
Daha fazla bilgi
- Reporting API v0'dan v1'e geçiş rehberi
- ReportingObserver
- Spesifikasyon: eski Reporting API (v0)
- Spesifikasyon: yeni Reporting API (v1)
Nine Koepfer / @enka80'in hero resmi Unsplash, düzenlendi. Bu makaleyle ilgili yorumları ve önerileri için Ian Clelland, Eiji Kitamura ve Milica Mihajlija'ya teşekkür ederiz.