OAUTH TARİHÇESİ: ŞİFRELERDEN KÜRESEL STANDARTLARA

Bunu her gün görüyorsunuz. "Google ile Giriş Yap" veya "GitHub ile Giriş Yap" butonuna tıklıyorsunuz. Şifre yazmıyorsunuz. Siteye anında giriş yapıyorsunuz.

Bu, OAuth sayesinde oluyor. Güvenlik için küresel standarttır. Ancak işler böyle başlamadı. Büyük sorunları çözmek için evrimleşti.

Şifrelerin Sorunu

İlk zamanlarda, her web sitesi için yeni bir şifre oluştururdunuz. Bu durum üç büyük soruna yol açıyordu:

  • İnsanlar her yerde aynı şifreyi kullanıyordu. Eğer bir site sızdırılırsa, her hesap risk altındaydı.
  • İnsanlar şifrelerini unutuyordu. İnterneti kullanmaktan çok "şifremi unuttum" butonuna tıklayarak vakit geçiriyorlardı.
  • Web siteleri ham şifrenizi görüyordu. Eğer bir site hacklenirse, şifreniz gitmiş oluyordu.

Güvenliğin Evrimi

  1. Basic Auth: Her istekte kullanıcı adınızı ve şifrenizi gönderirdiniz. Eğer HTTPS kullanmıyorsanız, hackerlar her şeyi görebilirdi.

  2. Session Cookies: Bir kez giriş yapar ve bir session ID alırdınız. Daha iyiydi ancak çerezler (cookies), XSS veya CSRF gibi saldırılarla çalınabilirdi. Ayrıca, bir site sizin giriş bilgilerinizi kullanarak başka bir siteyle iletişim kuramazdı.

  3. API Keys: Bir web sitesine özel bir anahtar verirdiniz. Bu daha iyiydi çünkü şifrenizi göndermiyordunuz. Ancak, API anahtarları genellikle çok fazla yetkiye sahiptir. Bir uygulamaya API anahtarı verirseniz, o uygulama e-postalarınızı okuma, mesaj gönderme ve hesabınızı silme yetkisine sahip olabilir. Bu, bir otel vale görevlisine arabanızın anahtarını vermeye benzer, ancak o anahtar aynı zamanda evinizin kapısını da açar.

OAuth Çözümü: Vale Anahtarı

OAuth oyunun kurallarını değiştirdi. Şifrenizi vermek yerine bir "token" verirsiniz. Bunu bir vale anahtarı gibi düşünün. Bir vale anahtarı, sürücünün arabanızı park etmesine izin verir ancak bagajı açmasına veya evinize erişmesine izin vermez.

OAuth Pratikte Nasıl Çalışır:

  • Canva'yı kullanmak ve Google'dan fotoğraflar çekmek istiyorsunuz.
  • Canva, Google'dan izin istiyor.
  • Google size soruyor: "Canva fotoğraflarınızı görüntüleyebilir mi?"
  • Siz diyorsunuz ki: "Evet, ama sadece görüntüleme. Hiçbir şeyi silmelerine izin verme."
  • Google, Canva'ya özel bir token veriyor.

Canva, Google şifrenizi asla görmez. Bir hacker bu token'ı çalsa bile, sadece kısa bir süreliğine fotoğrafları görüntüleyebilir. Şifrenizi değiştiremez veya paranızı transfer edemez.

Modern Güvenlik: PKCE

Mobil uygulamaların ve web uygulamalarının bir zayıflığı vardır. Sırları iyi saklayamazlar. Bunu düzeltmek için PKCE (Proof Key for Code Exchange) kullanırız.

Bir rezervasyon sistemi gibi çalışır:

  • Uygulama gizli bir kod (verifier) oluşturur.
  • Uygulama, bu kodun hashlenmiş bir versiyonunu (challenge) Google'a gönderir.
  • Uygulama token istediğinde, orijinal gizli kodu gönderir.
  • Google, kodun challenge ile eşleşip eşleşmediğini kontrol eder.

Eğer eşleşirlerse, Google bunun aynı uygulama olduğunu anlar. Eşleşmezlerse, Google isteği engeller. Bu, hackerların yetkilendirme kodunuzu (authorization code) çalmasını engeller.

OAuth Yol Haritası

  • 2007 (OAuth 1.0): Çok karmaşıktı ve ağır matematik kullanıyordu.
  • 2012 (OAuth 2.0): Daha hızlı ve daha kolaydı. Token kullanıyordu ve HTTPS gerektiriyordu.
  • 2016 (OAuth 2.0 + PKCE): Mobil ve modern web uygulamaları için güvenlik ekledi.
  • 2023 (OAuth 2.1): Yeni altın standart. Eski ve güvensiz yöntemleri kaldırıyor.

Temel Ders: Şifrenizi asla başka bir uygulamaya vermeyin. Onlara süresi dolan, sınırlı bir bilet verin. Kontrol sizde kalsın.

Kaynak: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4