PKCE: Genel İstemcileri Güvenceye Alma
Kod Değişimi için Kanıt Anahtarı'nı ve bunun yetkilendirme kodunun ele geçirilmesini nasıl önlediğini anlayın.
PKCE: Genel İstemcileri Güvenceye Alma, CoddyKit'te ücretsiz bir Cryptology Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cryptology Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cryptology Academy kursu toplamda 4 dersten oluşur.
Yetkilendirme Kodu Ele Geçirme
PKCE olmadan mobil uygulamalar, yetkilendirme kodunun ele geçirilmesi saldırılarına karşı savunmasızdır. Yetkilendirme sunucusu, yetkilendirme kodunu uygulamanın kayıtlı özel URI şemasına (örneğin myapp://callback) yönlendirdiğinde, aynı cihazdaki aynı URI şemasını kaydeden herhangi bir kötü amaçlı uygulama bu yönlendirmeyi ele geçirip kodu çalabilir.
Ele Geçirme Nasıl Gerçekleşir
Saldırı şu şekilde gerçekleşir: Kötü amaçlı bir uygulama, meşru uygulamayla aynı özel URI şemasını kaydeder. Yetkilendirme sunucusu kodu myapp://callback adresine yönlendirdiğinde OS, her iki uygulamayı da işleyici olarak sunabilir. Kullanıcı kötü amaçlı uygulamayı seçerse veya OS varsayılan olarak bu uygulamayı kullanırsa saldırgan, istemci gizli anahtarını bilmeden yetkilendirme kodunu alabilir ve bu kodu belirteçlerle değiştirebilir.
PKCE Kod Doğrulayıcı
PKCE (RFC 7636), yetkilendirme kodu akışına dinamik olarak oluşturulan bir gizli değer ekler. Akışı başlatmadan önce istemci, kod doğrulayıcı adı verilen, 43-128 karakter uzunluğunda kriptografik olarak rastgele bir dize oluşturur. Bu dize her yetkilendirme isteğine özgüdür ve belirteç değişimi adımına kadar hiçbir zaman iletilmez.
Kod Doğrulama Değerinin Hesaplanması
İstemci, doğrulayıcıdan bir kod doğrulama değeri hesaplar: code_challenge = BASE64URL(SHA256(code_verifier)). SHA256, RFC 7636'da zorunlu yöntemdir (doğrulayıcıyı doğrudan gönderen "plain" yöntemi önerilmez). Kod doğrulama değeri, doğrulayıcının tek yönlü dönüşümüdür; yani doğrulama değerini bilmek doğrulayıcıyı açığa çıkarmaz.
Yetkilendirmeye Kod Doğrulama Değerini Ekleme
Yetkilendirme isteği iki ek parametre içerir: "code_challenge=BASE64URL(SHA256(verifier))&code_challenge_method=S256". Yetkilendirme sunucusu, düzenlenen yetkilendirme koduyla ilişkili kod doğrulama değerini saklar. Bu aşamada ele geçirilebilecek hiçbir gizli bilgi sunucuya iletilmez.
Kod Doğrulayıcıyla Belirteç Değişimi
Belirteç değişimi sırasında (belirteç uç noktasına POST), istemci yetkilendirme koduyla birlikte "code_verifier=ORIGINAL_RANDOM_STRING" değerini gönderir. Yetkilendirme sunucusu BASE64URL(SHA256(code_verifier)) değerini hesaplar ve bunun saklanan code_challenge ile eşleştiğini doğrular. Yalnızca doğrulayıcıyı oluşturan meşru istemci bu denetimden geçebilir.
PKCE ile Ele Geçirme Neden Başarısız Olur
Saldırgan yetkilendirme kodunu ele geçirirse yalnızca kodu ve herkese açık olan kod doğrulama değerini alır. Kodu belirteçlerle değiştirmek için kod doğrulayıcıyı sağlaması gerekir. Doğrulayıcı meşru istemci tarafından oluşturulduğu ve güvenli biçimde gerçekleşen belirteç değişimine kadar iletilmediği için saldırgan doğrulayıcıyı hesaplayamaz veya elde edemez.
PKCE Kod Enjeksiyonunu Önler
PKCE ayrıca yetkilendirme kodu enjeksiyonu saldırılarını da önler; bu saldırılarda saldırgan, yeniden yönlendirme sırasında geçerli bir kodu çalınmış bir kodla değiştirir. Çalınan kodun doğrulama değeri, kurbanın istemcisinin sunacağı kod doğrulayıcıyla eşleşmez ve belirteç değişiminin başarısız olmasına neden olur. PKCE, aynı anda birden çok saldırı vektörüne karşı derinlemesine savunma sağlar.
PKCE Tüm İstemciler İçin
RFC 7636 başlangıçta genel istemciler (istemci sırları olmayan istemciler) için bir çözüm olarak tanımlanmış olsa da OAuth Güvenlik BCP'si ve OAuth 2.1, istemci sırlarına sahip gizli istemciler de dahil olmak üzere tüm istemciler için PKCE'yi zorunlu kılar. PKCE, istemci kimlik doğrulamasından bağımsız koruma sağlar ve bu nedenle herkes için yararlıdır.
OAuth 2.1'de PKCE
OAuth 2.1 (draft-ietf-oauth-v2-1), OAuth 2.0 Güvenlik BCP'sindeki güvenlik en iyi uygulamalarını tek bir belgede birleştirir. Tüm yetkilendirme kodu akışları için PKCE'yi zorunlu kılar, örtük akışı kullanımdan kaldırır ve yenileme belirteci döndürmeyi gerektirir. PKCE, yeni bir OAuth 2.0 uygulaması için fiilen gerekli temel standarttır.
Uygulama Notları
PKCE'yi doğru şekilde uygulamak şunları gerektirir: doğrulayıcı için kriptografik olarak güvenli bir rastgele oluşturucu kullanmak (en az 32 rastgele bayt, ardından base64url ile kodlanmış), doğrulayıcıyı istemcide güvenli şekilde saklamak (URL'de veya günlüklerde değil), S256 yöntemini kullanmak (plain değil) ve belirteç değişiminden sonra doğrulayıcının atıldığından emin olmak. Modern OAuth kitaplıklarının çoğu PKCE'yi otomatik olarak yönetir.
PKCE Kod Doğrulayıcısı Denetimi
PKCE'de kod doğrulayıcı ile kod doğrulama değeri arasındaki ilişki nedir?
Ders Özeti: PKCE Güvenliği
PKCE (RFC 7636), yalnızca meşru istemcinin bildiği, dinamik olarak oluşturulmuş bir kod doğrulayıcıya bağlayarak yetkilendirme kodunun ele geçirilmesini önler. Doğrulayıcı, kod doğrulama değerini üretmek için özetlenir ve bu değer herkese açık olarak gönderilir. Belirteç değişimi için özgün doğrulayıcı gerekir. PKCE hem ele geçirme hem de enjeksiyon saldırılarını önler. OAuth 2.1, tüm yetkilendirme kodu akışları için PKCE'yi zorunlu kılar.
Yapay zeka eğitmeniyle Cryptology Academy öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 67
- Dersler
- 261
Sıkça Sorulan Sorular
“PKCE: Genel İstemcileri Güvenceye Alma” dersi ücretsiz mi?
Evet — “PKCE: Genel İstemcileri Güvenceye Alma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cryptology Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cryptology Academy kursu toplamda 4 dersten oluşur.
“PKCE: Genel İstemcileri Güvenceye Alma” dersinde ne öğreneceğim?
Kod Değişimi için Kanıt Anahtarı'nı ve bunun yetkilendirme kodunun ele geçirilmesini nasıl önlediğini anlayın. Cryptology Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cryptology Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cryptology Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“PKCE: Genel İstemcileri Güvenceye Alma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cryptology Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cryptology Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- OAuth 2.0 Akışları ve Belirteç Türleri
- PKCE: Genel İstemcileri Güvenceye Alma
- OpenID Connect Talepleri ve ID Belirteçleri
- OAuth Güvenlik Açıkları ve Saldırı Kalıpları