CORS Kontrol Aracı

Herhangi bir URL için Çapraz Kaynak Paylaşımı (CORS) yapılandırmasını kontrol edin. Access-Control-* yanıt başlıklarını inceleyin, özel Origin/yöntem/başlıklarla isteğe bağlı bir ön kontrol (OPTIONS) isteği çalıştırın ve joker karakter + kimlik bilgileri, eksik Vary: Origin veya aşırı geniş allow-headers gibi yaygın yanlış yapılandırmaları tespit edin.

Loading…

Hakkında CORS Kontrol Aracı

Bir API veya sayfa URL'si yapıştırın ve tarayıcıların çapraz kaynak isteklere izin verip vermeyeceğini doğrulayın. Bu araç, CORS yanıt başlıklarını analiz eder, gerçekçi bir ön kontrol (OPTIONS) kontrolü çalıştırabilir ve riskli veya bozuk yapılandırmaları (kimlik bilgileriyle "*", eksik Vary: Origin veya zayıf allow-methods/allow-headers gibi) vurgular.

Özellikler

  • Herhangi bir genel URL için CORS başlık incelemesi (Access-Control-* ve ilgili başlıklar).
  • Özel Origin, istek yöntemi ve istek başlıklarıyla isteğe bağlı ön kontrol simülasyonu (OPTIONS).
  • Yönlendirmeleri takip edin (en fazla 10) böylece tarayıcıların gerçekten ulaştığı son noktayı doğrulayın.
  • Tam şeffaflık ve hata ayıklama için ham başlıklar görünümü.
  • Hızlı triaj için "sadece sorunlar" filtrelemesiyle bulgular + puan kartı.
  • Eksik Vary: Origin ve diğer önbellek ile ilgili CORS tuzaklarını tespit etmek için Vary analizi.
  • Denetimler, biletler ve belgeleme için sonuçları JSON ve PDF raporları olarak dışa aktarın.
  • Yaygın sorunlar için yerleşik öneriler: joker karakter+kimlik bilgileri, Origin yansıtma, null Origin, eksik allow-methods/allow-headers, eksik max-age ve aşırı geniş allow-headers.

🧭 Nasıl kullanılır for cors-checker

1

Hedef URL'yi girin

Test etmek istediğiniz uç noktayı yapıştırın (örneğin, https://api.example.com/resource).

2

Test ettiğiniz Origin'i ayarlayın

Ön uç uygulamanızın Origin'ini (şema + ana bilgisayar) girin, örneğin https://app.example.com. Bu, tarayıcıların Origin başlığında gönderdiği değerdir.

3

Bir kontrol modu seçin

Hem yanıt başlıklarını hem de ön kontrol davranışını analiz etmek için Otomatik'i (önerilen) kullanın. Özel olarak ön kontrol olmayan bir senaryo istiyorsanız Basit istek'i veya OPTIONS kontrolleri çalıştırmak için Sadece ön kontrol'ü kullanın.

4

Ön kontrol detaylarını yapılandırın (uygulanabilirse)

"Ön Kontrol Çalıştır (OPTIONS)" özelliğini etkinleştirin ve gerçek tarayıcı ön kontrol davranışını simüle etmek için İstek Yöntemi ve İstek Başlıklarını (virgülle ayrılmış) ayarlayın (örneğin, yetkilendirme, içerik türü). Kullanım durumunuz çerezler veya kimlik doğrulama başlıkları içeriyorsa "Kimlik bilgilerini dikkate al" seçeneğini açın.

5

Bulguları gözden geçirin ve dışa aktarın

Bulgular/puan kartını ve CORS analiz detaylarını kontrol edin. Hata ayıklarken "Ham Başlıkları Göster" seçeneğini açın. Paylaşım veya denetimlerde saklamak için JSON/PDF olarak dışa aktarın.

Teknik özellikler

İstek modeli

Araç, bir hedef URL için CORS başlıklarını inceler ve isteğe bağlı olarak sağlanan Origin, yöntem ve istenen başlıkları kullanarak bir ön kontrol (OPTIONS) isteği gerçekleştirebilir. Yönlendirme takibi desteklenir.

AyarDavranışVarsayılan
Kontrol ModuOtomatik, Basit istek veya Yalnızca Ön KontrolOtomatik
Ön Kontrol Çalıştır (OPTIONS)Etkinse, bir OPTIONS ön kontrol simülasyonu gerçekleştirirEtkin
OriginAnaliz/ön kontrol için kullanılan Origin başlık değerihttps://example.com
İstek MetoduÖn kontrol için Access-Control-Request-Method değeriGET
İstek BaşlıklarıÖn kontrol için Access-Control-Request-Headers (virgülle ayrılmış)Boş
Yönlendirmeleri Takip EtSon URL'ye kadar yönlendirme zincirini takip ederEtkin
Maksimum YönlendirmeDöngüleri önlemek için yönlendirme sınırı10 (aralık 0–20)
Zaman Aşımıİstek zaman aşımı sınırı15000 ms
Kullanıcı Aracısıİstek kullanıcı aracısını tanımlarEncode64Bot/1.0 (+https://encode64.com)
Özel ağlarGüvenlik için özel ağ aralıklarına erişimi engellerDevre dışı (özel ağlara izin verilmez)

Analiz edilen başlıklar (temel CORS seti)

Analizci, tarayıcılar ve ön kontroller tarafından kullanılan standart CORS yanıt ve istek başlıklarına odaklanır.

BaşlıkAmaç
Access-Control-Allow-OriginHangi Origin(lere) izin verildiği
Access-Control-Allow-CredentialsÇerezler/kimlik bilgilerine izin verilip verilmediği (joker olmayan origin gerektirir)
Access-Control-Allow-MethodsÇapraz kaynak istekleri için izin verilen yöntemler (ön kontrol için önemli)
Access-Control-Allow-Headersİzin verilen başlıklar (Yetkilendirme ve özel başlıklar için önemli)
Access-Control-Expose-HeadersTarayıcı JS tarafından okunabilen başlıklar
Access-Control-Max-AgeÖn kontrolün tarayıcı tarafından ne kadar süre önbelleğe alınabileceği
VaryÖnbellek anahtarı varyasyonu (örn. Vary: Origin) önbellek zehirlenmesi/karışmasını önlemek için
Origin / Access-Control-Request-*Ön kontrol davranışını simüle etmek için kullanılır

Buluşsal Yöntemler (yaygın CORS tuzakları işaretlenir)

Bulgular, bozuk veya riskli CORS kurulumlarını tespit etmek için pratik ve güvenlik odaklı kontrollere dayanmaktadır.

KontrolNeden önemli
Joker karakter + kimlik bilgileriAccess-Control-Allow-Origin: * kimlik bilgileriyle kullanılamaz; tarayıcılar engeller veya davranış güvensizdir
Eksik Vary: OriginYanıtlar Origin'e göre değişiyorsa ancak doğru önbelleğe alınmıyorsa, paylaşılan önbellekler yanıtları siteler arasında karıştırabilir
Origin YansıtmaOrigin'i körü körüne yankılamak, güvenilmeyen kaynaklara istemeden izin verebilir
Null Origin uyarılarıOrigin: null, korumalı iframe'lerde veya dosya bağlamlarında görünebilir; buna izin vermek genellikle risklidir
Eksik Allow-Methods / Allow-HeadersSunucu yöntem/başlıkları açıkça izin vermezse ön kontrol başarısız olabilir
Aşırı Geniş Allow-HeadersÇok fazla başlığa izin vermek saldırı yüzeyini genişletebilir
Eksik Max-AgeÖn kontrol çok sık çalışabilir, gecikme ekler
CORS bir tarayıcı zorlama mekanizmasıdır. Sunuculara tarayıcı olmayan istemciler aracılığıyla çapraz kaynaktan erişilebilir; CORS'u daha geniş bir güvenlik duruşunun parçası olarak ele alın, tek kontrol olarak değil.

Komut satırı

Terminalinizden CORS ve ön kontrol davranışını yeniden oluşturmak için bu komutları kullanın. Hata ayıklama ve aracın raporladıklarını doğrulama için faydalıdırlar.

macOS / Linux

Normal bir istek için CORS başlıklarını kontrol edin (bir tarayıcı Origin'ini simüle edin)

curl -i -H "Origin: https://example.com" https://api.example.com/resource

Access-Control-Allow-Origin, Access-Control-Allow-Credentials ve Vary'yi arayın.

Bir ön kontrol OPTIONS isteği çalıştırın (yöntem + başlıklar)

curl -i -X OPTIONS -H "Origin: https://app.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: authorization, content-type" https://api.example.com/private

Ön kontrol, tarayıcının devam etmesi için doğru Access-Control-Allow-Methods ve Access-Control-Allow-Headers'i döndürmelidir.

Başlıkları kontrol ederken yönlendirmeleri takip et

curl -iL -H "Origin: https://example.com" https://api.example.com

Uç noktalar farklı CORS kurallarına sahip başka bir ana bilgisayara yönlendirdiğinde kullanışlıdır.

Windows (PowerShell)

Origin başlığı ile yanıt başlıklarını incele

$r = Invoke-WebRequest -Uri https://api.example.com/resource -Headers @{ Origin = "https://example.com" }; $r.Headers

Access-Control-* başlıkları mevcutsa görüntüler.

Ön yüzünüz çerez veya kimlik doğrulama kullanıyorsa, izin verici CORS'tan kaçının. Güvenilir kökenlerin açık bir izin listesini tercih edin ve yanıtlar kökene göre farklılık gösterdiğinde Vary: Origin ekleyin.

Kullanım durumları

Bir ön yüz "CORS engellendi" tarayıcı hatasını ayıkla

Fetch/XHR bir CORS hatası ile başarısız olduğunda, sunucunun Origin ve istek türünüz için gerekli Access-Control-* başlıklarını döndürüp döndürmediğini doğrulayın.

  • Access-Control-Allow-Origin'ın uygulama kökeninizle eşleştiğini onaylayın
  • Çerez/kimlik doğrulama kullanıyorsanız, Access-Control-Allow-Credentials'ın true olduğunu kontrol edin (ve köken joker karakter değil)
  • Birden fazla kökene izin verirken Vary: Origin'in mevcut olduğundan emin olun

Authorization / özel başlıklar için ön kontrolü doğrula

Çoğu kimliği doğrulanmış API çağrısı, Authorization veya basit olmayan içerik türleri nedeniyle ön kontrol tetikler. Bu araç, OPTIONS yanıtlarının gerekli yöntem ve başlıklara izin verdiğinden emin olmaya yardımcı olur.

  • Access-Control-Allow-Methods'in gerektiği gibi POST/PUT/PATCH/DELETE içerdiğini doğrulayın
  • Access-Control-Allow-Headers'in authorization, content-type ve gerekli X-* başlıklarını içerdiğini doğrulayın
  • Dağıtımdan önce eksik allow-methods/allow-headers'ı yakalayın

CORS politikasının güvenlik incelemesi

CORS yapılandırma hataları, özel API'leri (özellikle kimlik bilgileriyle) kötü niyetli sitelere yanlışlıkla açabilir. Yüksek riskli kalıpları yakalamak için bulguları kullanın.

  • Kimlik bilgileriyle birleştirilmiş joker karakter kökenini tespit edin
  • Rastgele sitelere izin veren yansıtıcı köken kalıplarını tespit edin
  • Amaçlanmadığında Origin: null'a izin verilmesini işaretleyin

Ön kontrol önbelleklemesiyle performansı iyileştirin

Ön kontrol istekleri gidiş-dönüş ve gecikme ekler. Doğru Max-Age, kararlı API'ler için tekrarlanan ön kontrol kontrollerini azaltabilir.

  • Uygun olduğunda Access-Control-Max-Age'in mevcut olduğunu doğrulayın
  • Sık API trafiği için tekrarlanan OPTIONS çağrılarını azaltın

❓ Frequently Asked Questions

Basit terimlerle CORS nedir?

CORS (Çapraz Köken Kaynak Paylaşımı), bir kökenden (şema + ana bilgisayar + port) gelen bir web sayfasının başka bir kökenden gelen yanıtları okuyup okuyamayacağını kontrol eden bir tarayıcı güvenlik mekanizmasıdır. Belirli Access-Control-* yanıt başlıklarına dayanır.

Bir tarayıcı ne zaman ön kontrol (OPTIONS) isteği gönderir?

Ön kontrol, istek "basit" olmadığında, örneğin belirli içerik türleriyle POST gibi yöntemler kullanıldığında veya Authorization veya özel X-* başlıkları gönderildiğinde gönderilir. Tarayıcı, gerçek isteği göndermeden önce OPTIONS aracılığıyla izinleri kontrol eder.

Neden "Access-Control-Allow-Origin: *" kimlik bilgileriyle tehlikelidir?

Tarayıcılar, kimlik bilgileri söz konusu olduğunda açık bir köken gerektirir. Kimlik bilgileriyle joker karakter kullanmak, kimlik bilgili istekler için geçersizdir ve riskli bir yapılandırmayı gösterir. Güvenilir kökenlerin açık bir izin listesini tercih edin.

Neden Vary: Origin'e ihtiyacım var?

Sunucunuz, istek Origin'ine bağlı olarak farklı Access-Control-Allow-Origin değerleri döndürüyorsa, önbellekler bir site için tasarlanmış bir yanıtı başka birine sunmaktan kaçınmak için Origin'e göre değişmelidir. Vary: Origin, önbellek karışımını ve ilgili güvenlik sorunlarını önlemeye yardımcı olur.

CORS, tarayıcı dışı istemcilerden API'mi koruyabilir mi?

Hayır. CORS tarayıcılar tarafından uygulanır. Tarayıcı dışında çalışan betikler (sunucular, curl, mobil uygulamalar) CORS'a bakılmaksızın API'nizi çağırabilir. Gerçek erişim kontrolü için kimlik doğrulama, yetkilendirme ve hız sınırlaması kullanın.

Ön kontrol (preflight) test ederken "İstek Başlıkları"na ne yazmalıyım?

Ön yüzünüzün göndereceği başlıkları virgülle ayırarak listeleyin (örneğin, authorization, content-type, x-request-id). Bu, Access-Control-Request-Headers'ı simüle eder ve sunucunun bu başlıklara izin verip vermediğini kontrol eder.

URL'leri buraya yapıştırmak güvenli mi?

Araç, sağlanan URL'ye sunucu tarafı istekler yapar ve özel ağ hedeflerini engeller. URL'lere gizli bilgiler eklemekten (sorgu dizelerindeki token'lar gibi) kaçının ve güvendiğiniz genel uç noktaları tercih edin.

Pro Tips

Best Practice

Herhangi bir Origin'i yansıtmak yerine, güvenilir kökenlerin bir izin listesini tercih edin. CORS'u güvenlik açısından hassas bir yapılandırma olarak ele alın.

Best Practice

Çerez/kimlik doğrulama kullanıyorsanız, Access-Control-Allow-Credentials: true ayarlayın VE açık bir köken döndürün ("*" değil).

Best Practice

Birden fazla kökene izin verirken veya izin verilen kökeni dinamik olarak seçerken Vary: Origin ekleyin.

Best Practice

Kararlı API'ler için ön kontrol gecikmesini azaltmak için makul bir Access-Control-Max-Age ekleyin.

Best Practice

Hem ön kontrolü hem de gerçek istek yolunu test edin; bazı kurulumlar GET için doğru başlıkları döndürür ancak OPTIONS'ta başarısız olur.

CI Tip

JSON raporlarını dışa aktarın ve API ağ geçidi yapılandırma değişikliklerinin yanında saklayarak gerilemeleri hızlıca tespit edin.

Additional Resources

Other Tools