SEJARAH OAUTH: DARIPADA KATA LALUAN KEPADA PIAWAIAN GLOBAL

Anda melihatnya setiap hari. Anda klik "Login with Google" atau "Login with GitHub." Anda tidak menaip kata laluan. Anda memasuki laman web tersebut dengan serta-merta.

Ini berfungsi kerana OAuth. Ia adalah piawaian global untuk keselamatan. Namun, ia tidak bermula begini. Ia berkembang untuk menyelesaikan masalah yang besar.

Masalah dengan Kata Laluan

Pada peringkat awal, anda mencipta kata laluan baharu untuk setiap laman web. Ini menyebabkan tiga isu besar:

  • Orang ramai menggunakan kata laluan yang sama di mana-mana sahaja. Jika satu laman web bocor, setiap akaun berada dalam risiko.
  • Orang ramai terlupa kata laluan. Mereka menghabiskan lebih banyak masa mengklik "forgot password" daripada menggunakan web.
  • Laman web dapat melihat kata laluan mentah anda. Jika sesebuah laman web digodam, kata laluan anda akan hilang.

Evolusi Keselamatan

  1. Basic Auth: Anda menghantar nama pengguna dan kata laluan anda dengan setiap permintaan. Jika anda tidak menggunakan HTTPS, penggodam boleh melihat segalanya.

  2. Session Cookies: Anda log masuk sekali dan mendapat ID sesi. Ia lebih baik, tetapi kuki boleh dicuri melalui serangan seperti XSS atau CSRF. Selain itu, satu laman web tidak dapat menggunakan log masuk anda untuk berkomunikasi dengan laman web lain.

  3. API Keys: Anda memberikan kunci khas kepada sesebuah laman web. Ini lebih baik kerana anda tidak menghantar kata laluan anda. Walau bagaimanapun, API keys sering kali mempunyai kuasa yang terlalu besar. Jika anda memberikan API key kepada sesuatu aplikasi, aplikasi tersebut mungkin mempunyai kuasa untuk membaca e-mel anda, menghantar mesej, dan memadam akaun anda. Ia seperti memberikan kunci kereta anda kepada valet hotel, tetapi kunci tersebut juga boleh membuka rumah anda.

Penyelesaian OAuth: Kunci Valet

OAuth telah mengubah segalanya. Daripada memberikan kata laluan anda, anda memberikan "token." Anggaplah ia sebagai kunci valet. Kunci valet membolehkan pemandu meletakkan kereta anda, tetapi ia tidak membenarkan mereka membuka but kereta atau mengakses rumah anda.

Bagaimana OAuth Berfungsi dalam Praktik:

  • Anda ingin menggunakan Canva dan mengambil foto daripada Google.
  • Canva meminta kebenaran daripada Google.
  • Google bertanya kepada anda: "Bolehkah Canva melihat foto anda?"
  • Anda berkata: "Ya, tetapi hanya untuk melihat. Jangan benarkan mereka memadam apa-apa."
  • Google memberikan Canva token yang khusus.

Canva tidak pernah melihat kata laluan Google anda. Walaupun penggodam mencuri token tersebut, mereka hanya boleh melihat foto untuk seketika sahaja. Mereka tidak boleh menukar kata laluan anda atau memindahkan wang anda.

Keselamatan Moden: PKCE

Aplikasi mudah alih dan aplikasi web mempunyai kelemahan. Ia tidak dapat menyembunyikan rahsia dengan baik. Untuk mengatasi masalah ini, kita menggunakan PKCE (Proof Key for Code Exchange).

Ia berfungsi seperti sistem tempahan:

  • Aplikasi mencipta kod rahsia (the verifier).
  • Aplikasi menghantar versi kod yang telah di-hash (the challenge) kepada Google.
  • Apabila aplikasi meminta token, ia menghantar kod rahsia yang asal.
  • Google menyemak jika kod tersebut sepadan dengan challenge.

Jika ia sepadan, Google tahu ia adalah aplikasi yang sama. Jika tidak sepadan, Google menyekat permintaan tersebut. Ini menghalang penggodam daripada mencuri kod kebenaran (authorization code) anda.

Peta Jalan OAuth

  • 2007 (OAuth 1.0): Sangat kompleks dan menggunakan matematik yang berat.
  • 2012 (OAuth 2.0): Lebih pantas dan mudah. Ia menggunakan token dan memerlukan HTTPS.
  • 2016 (OAuth 2.0 + PKCE): Menambah keselamatan untuk aplikasi mudah alih dan aplikasi web moden.
  • 2023 (OAuth 2.1): Piawaian emas baharu. Ia menghapuskan kaedah lama yang tidak selamat.

Pengajaran Utama: Jangan sesekali memberikan kata laluan anda kepada aplikasi lain. Berikan mereka tiket terhad yang mempunyai tarikh luput. Anda kekal memegang kawalan.

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