EP 121

Ngobrolin Kata Sandi - Ngobrolin WEB

Bagikan:

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. Topik, tautan dan pertanyaan menarik bisa dilayangkan ke https://ksana.in/ngobrolinweb Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Ringkasan Episode

Bantu Koreksi

Episode Ngobrolin Web ke-122 membahas topik password secara komprehensif dari berbagai sisi: pengguna, developer front-end, hingga back-end. Diskusi dimulai dengan pentingnya password yang kuat dan unik untuk mencegah kebocoran data, yang masih menjadi salah satu top 10 OWASP security risks. Para host membahas praktik terbaik untuk pengguna seperti menggunakan password manager (Bitwarden, LastPass, bawaan browser), menghindari password yang sama di multiple services, dan memanfaatkan fitur password generator. Dari sisi developer, dibahas implementasi yang benar mulai dari penggunaan input type="password" yang semantik, atribut autocomplete yang proper, hingga teknik hashing dan salting di sisi server menggunakan library seperti bcrypt, Argon2, dan lain-lain. Episode ini juga menyinggung evolusi layanan autentikasi modern seperti Auth0, Firebase, Supabase, dan AuthJS yang mempermudah implementasi security tanpa harus membangun dari nol.

Poin-poin Utama

  • Password yang lemah seperti '123456' atau 'password' masih menjadi penyebab utama kebocoran data dan termasuk dalam top 10 OWASP security risks
  • Pengguna wajib menggunakan password manager (Bitwarden, LastPass, atau bawaan browser) untuk mengelola password yang kompleks dan unik untuk setiap service
  • Browser modern telah menggalakkan penggunaan password manager dengan fitur sinkronisasi antar device dan browser extension yang memudahkan autofill
  • Front-end developer harus menggunakan input type='password' secara semantik dan mengkombinasikannya dengan atribut autocomplete yang proper untuk UX yang baik
  • Password tidak boleh dikirim dalam plaintext dan harus di-hash di client-side sebelum dikirim ke server, meskipun hashing utama tetap dilakukan di server
  • Di sisi server, password harus di-hash menggunakan algoritma seperti bcrypt atau Argon2 dengan teknik salting untuk mencegah rainbow table attacks
  • Salt harus unik dan random untuk setiap user, tidak boleh diambil dari data yang predictable seperti username atau timestamp
  • Framework modern seperti Laravel, Node.js, dan AuthJS telah menyediakan library bawaan untuk password hashing dan verifikasi yang secure
  • Layanan autentikasi modern seperti Auth0, Firebase, Supabase, dan Cognito semakin mengurangi kebutuhan untuk membangun sistem autentikasi manual
  • Episode ini di-sponsor oleh Hacktivate (coding bootcamp) dan Nupea keyboard, dengan voting topik minggu depan adalah Design Pattern
Transkrip Bantu Koreksi

0:00[Music]

0:14Selamat malam. Hai hai selamat.

0:21Dutemu lagi kita di..

0:24Hari Selasa.

0:25Malam ya.

0:26Hari Selasa waktunya.

0:28Brolin web.

0:30Brolin web.

0:31Iya.

0:32Balik lagi kita di jam 9.

0:34Karena masih di bulan Ramadhan.

0:37Gimana puasannya?

0:38Mudah-mudahan lancar ya.

0:39Komen temennya.

0:40Sehat-sehat terus.

0:42Terus nanti.

0:44Iya.

0:45Semoga.

0:46Baru habis ujan.

0:47Semoga nggak banjir.

0:49Nggak ada bencana alam.

0:50Lancar-lancar semuanya.

0:52Yah.

0:53Malam hari ini.

0:55Nggak marah.

0:56Nggak marah-marah.

0:57Oh lo.

0:58Senang harusnya bisa nyerok.

1:03Selamat datang.

1:04Hah?

Lihat transkrip lengkap

1:05Bisa nyerok.

1:06Nyerok apa?

1:07GSTH.

1:09GSTH.

1:10GSTH.

1:11Iya bisa beli harga diskon.

1:13Oh harga diskon ya.

1:15Oh gitu ya.

1:16Tricknya ya.

1:17Oke oke oke.

1:19Kecuali turun lagi ya nggak tahu.

1:21Jangan lah jangan.

1:23Nah ini udah musim.

1:24Udah musim international break ya.

1:26Musim international break juga ini.

1:28Cuma temben ya.

1:29Kali ini nggak bentruk sama pertandingan tim nas.

1:32Tim nas itu.

1:35Hari Kamis.

1:36Kamis ya Kamis.

1:37Temen.

1:38Temen nggak bentruk.

1:39Yang depan.

1:40Selasa depan baru bentruk.

1:41Indonesia jadi lolos nggak sih?

1:42Ya nggak tahu.

1:44Belum.

1:45Makanya main dulu.

1:46Belum.

1:47Kan masih ngisihan.

1:48Selamat malam Dwi.

1:49Halo.

1:50Kita masih mengira-ngira Dwi ini toh apa.

1:52Dwi.

1:53Dari berapa episode kemarin.

1:57Apa ternyata kucing.

1:59Itu kucing putina atau kucing jantan kira-kira.

2:01Gimana mau dilihat.

2:03Tidak bisa membedakan.

2:07Selamat datang di episode ke 122.

2:11Malam ini kita akan membahas tentang password.

2:15Dari berbagai sisi.

2:17Kata Sandi.

2:19Password.

2:21Dari baik dari kita sebagai pengguna gimana mungkin harus set password.

2:26Terus mungkin dari sisi UI harus gimana.

2:31Dari sisi UX harus gimana.

2:33Sampai ke database.

2:35Disimpan di database kayak gimana.

2:37Pokoknya semua hal lah ya.

2:39Dan password ini salah satu top 10 OWA security.

2:48Oh iya masih ada hubungannya sama security kemarin ya minggu lalu.

2:51Jadi salah satu faktor yang sering menyebabkan kebobolan ya.

2:58Data kebobolan itu dari password.

3:00Entah passwordnya terlalu gampang.

3:02Karena passwordnya 123456.

3:05Yang paling umum apa sih.

3:08ABC 123 ya atau apa ya.

3:10Admin ya.

3:11Kita coba aja.

3:12Kita coba aja.

3:13Mungkin kita coba saya coba.

3:15Ada satu ini kan.

3:17Joko yang bikin perlipian kayak gitu.

3:20Tapi sebelum itu pesan sponsor dulu.

3:25Jadi episode ini disponsori oleh Hacktivate.

3:30Kalau teman-teman yang tertarik mau ikutan coding bootcamp.

3:34Mumpung masih puasa masih ada diskon.

3:37Jadi ada dua bootcamp yang diskon.

3:40Yang pertama full time bootcamp.

3:42Yang bootcampnya itu setingkat sampai jumat.

3:46Yang pagi sampai malam.

3:48Itu diskonnya 10 juta rupiah.

3:50Kalau yang kelas malam.

3:52Itu diskonnya 4 juta rupiah.

3:54Jadi langsung aja daftar.

3:56Cari-cari tau informasinya ke Hacktivate.com.

3:59HTTPS.2/Hacktivate.com

4:04Langsung aja.

4:05Di situ kan ada kolom.

4:08Ada tombol untuk chat ya.

4:10Kalau mau nanya-nanya bisa langsung di sana.

4:12Kalau mau jadi instruktur.

4:15Oh bisa.

4:16Kalau mau jadi instruktur.

4:18Cari carrier page-nya Hacktivate.

4:21Ada aloh.

4:22Ada beneran lagi.

4:23Ada.

4:25Ada dong.

4:26Tapi gak tau lagi hiring atau enggak ya.

4:29Maksudnya untuk yang instruktur ya.

4:32Lagi hiring atau enggak.

4:34Belum dilihat lagi.

4:36Malam dari Australia.

4:38Wah.

4:39Ini jam 12.

4:41Belum pernah.

4:43Belum pernah.

4:44Keren.

4:45Keren mau nonton.

4:46Belum pernah ke Australia.

4:48Eh.

4:50Lengkap loh.

4:51Ada Eka, ada Dewi, ada Tri.

4:52Kurang catur.

4:53Please dong.

4:54Kalau ada yang nonton.

4:55Yang namanya catur.

4:56Tolong.

4:57Post di komen.

4:58Biar lucu.

4:59Eka, Dewi, Tri.

5:00Catur.

5:015 apa?

5:02Kurang catur sama panca.

5:044 catur.

5:05Panca.

5:064 catur sama panca.

5:08Luar biasa.

5:10Kompakannya kalian namanya ya.

5:12Kita kembali ke pembahasan tentang password.

5:15Apa nih?

5:16Ivan mau nunjukin apa?

5:18Tadi kan katanya password apa yang paling sering.

5:21Kita cek 1.

5:24Namanya.

5:25Ini.

5:26Pernah dengar pastinya ya.

5:27Have I been found?

5:29Iya.

5:30Ini sering sih.

5:31Ya.

5:32Kita coba aja.

5:33Contohnya apa sih?

5:34Password.

5:35Password.

5:36Password lah.

5:37Password.

5:38Kalau password kita password.

5:40Oh, 21 juta kali.

5:4221 juta.

5:43Ini website-nya namanya Have I Been Found?

5:47Ya.

5:48Bentar saya copy paste dulu bentar ya.

5:52Ya.

5:53Copy paste ke.

5:54Coba kalau 1 sampai 6.

5:551, 2, 3, 4, 5.

5:56Oke.

5:57Sedikit dulu ini sebelum kesana.

6:00Kita.

6:01Pasti website ini.

6:02Password ini mengumpulkan database password dari situs-situs.

6:08Data bridge.

6:09Kena hack dan datanya di-share di.

6:12Setengah dijual di tech web.

6:14That way.

6:15That way.

6:16That way.

6:17Itu ya.

6:18Dan.

6:19Orang yang di belakang ini mengumpulkan data-data password itu dan mereka membuat database sendiri.

6:24Jadi kalau kita mau cek.

6:25Da.

6:26Pernahkah password kita.

6:29Password ini.

6:30Password dalam.

6:31Di situs tertentu.

6:33Dan situs-situs pernah dibobol.

6:35Pernahkah password kita udah keshare ke orang lain.

6:38Jadi kalau situs ini aja punya.

6:40Berarti ya.

6:41Pelaku-pelaku yang lain sudah punya.

6:43Dan kita akan rentan dengan yang namanya dictionary attack.

6:47Contohnya 1, 2, 3, 4, 5, 6.

6:52Oh ditemukan 127 juta kali.

6:55127 juta.

6:57Jadi modus operandinya sih yang.

7:00Dia gak tau.

7:01Dia gak tau.

7:02Dia gak tau.

7:03Dia gak tau.

7:04Database-nya berapa.

7:05Ada gak sih?

7:06Jadi maksudnya kalau udah masuk list itu rawan kena itu kan.

7:09Yang tadi apa dictionary attack itu.

7:12Modus operandinya adalah.

7:14Dia masukin kayak apa.

7:16Automate login random.

7:19Login email kita.

7:20Terus passwordnya pakai.

7:23Dari list password itu ya.

7:25Iya.

7:26Namanya dictionary attack.

7:28Dicoba semua dari atas satu persatu.

7:31500.

7:32Then version 7 arrive total 613 juta.

7:39Riza Fahmy.

7:44Ada gak sih yang pakai Riza Fahmy?

7:46Coba tes.

7:47Ih ada tiga kali.

7:51Tiga kali.

7:52Berarti tiga kali ya.

7:55Ada tiga record.

7:57Tiga kasus yang masuk.

8:00Gue aja yang punya nama itu gak pernah pakai password itu.

8:04Tapi nama Mas Riza gak unik kan.

8:08Ada orang lain yang punya nama itu.

8:10Atau memang fansnya Mas Riza.

8:13Itu juga bisa ya.

8:16Iya.

8:18Biasanya kan kalau anak-anak I love you gitu.

8:25Ada lah.

8:27Jangan pakai kata-kata yang umum gitu lah.

8:31Pasti udah ada lah.

8:33Tanggal lahir.

8:34Paling sering salah satu yang paling sering juga tanggal lahir kan.

8:37Ini saya 31 februari.

8:39Coba tanggal lahir Pancasila.

8:4230 februari.

8:45Tanggal lahir Pancasila.

8:47Berapa ya?

8:4917 Agustus aja lah 17 08 1 9 45.

8:57Ada lagi.

8:59Itu ada 45 lagi.

9:01Oh iya.

9:03Bukan cuma.

9:05Jadi kita gak usah repot-repot ke website itu.

9:10Di Chrome browser.

9:12Sekarang juga udah punya built-in fitur kayak gini nih.

9:16Jadi kalau misalnya gue taunya gara-gara punya test account dong.

9:20Test account ya pokoknya di lokal sama di password protected environment.

9:27Emang test account 123456.

9:29Login sukses.

9:30Dari Chrome-nya muncul warning-nya.

9:33Password ini sudah sering muncul di data bridge.

9:36Dia nawarin untuk obat passwordnya.

9:40Bisa ada sedikit pengamanannya juga ya.

9:46Udah ngebantu banget sih itu.

9:49Terutama buat orang awam ya.

9:51Yang bukan developer.

9:53Yang di luar circle kita lah.

9:55Gak ngerti have I been called gitu.

9:57Mirip dengan itu.

10:00Apa namanya?

10:02Kalau di one password dia ngasih yang namanya watchtower.

10:07Jadi dia bisa ngasih tau.

10:11Password kita itu.

10:13Overall password string yang kita punya di database one password itu.

10:17Sudah berapa kali ada yang sudah dipakai.

10:21Reusable di tempat lain.

10:23Dan sudah kompromis.

10:25Dan kita disuruh untuk ganti.

10:29Itu salah satu password manager ya.

10:32Tapi ada cerita itu juga yang berkaitan dengan Eka kan.

10:37Biasanya untuk localhost kan.

10:39Masukin test account gitu kan.

10:42Dulu waktu tahun 2015.

10:47Waktu masih jadi developer gitu ya.

10:50Kita tuh bertiga kan.

10:52Waktu masih jadi developer.

10:54Waktu itu ya.

10:56Terus ada temen yang istilahnya paling jago lah.

11:02Dia yang set up semua autentikasi.

11:04Jadi kalau pake test account dia.

11:08Pasti passwordnya itu udah generic banget gitu.

11:10Nickname dia sama ujungnya 123.

11:14Terus kita bertiga.

11:16Nah jangan kasih tau lah.

11:18Nggak boleh lah.

11:20Nanti bocor.

11:22Terus kan kita bertiga.

11:24Yang dua iseng nih.

11:26Gue sama temen iseng.

11:28Ini jangan-jangan passwordnya dipake.

11:30Di account beneran.

11:32Kita coba lah. Kita tau emailnya kan.

11:34Kita coba masuk facebook beneran.

11:36Bisa masuk.

11:38Terus abis itu kita isengin.

11:42Buka chat ke diri sendiri.

11:44"Halo, saya si ini dari masa depan."

11:47"Dari masa depan."

11:48"Masuk kamu nanti kebobolan."

11:51Abis dia tau. Ujungnya gak tau dia beneran baca atau nggak.

11:54Gitu gak tau sih ceritanya.

11:56Sampai sekarang masih misteri.

11:58Jadi ya, gitu lah.

12:03Jadi harap berhati-hati.

12:04"Oh iya saya juga pake Npass."

12:06"Saya juga pake Npass."

12:08Gue belum pernah denger Npass dong.

12:11Npass itu kalau untuk desktop.

12:15Dia free.

12:17Tapi yang untuk mobilannya dia berbayar.

12:20Tapi bayarnya one time.

12:22Lumayan lah.

12:24Nggak semahal one pass.

12:27Karena dulu pengen one pass.

12:29Cuman dulu one pass itu baru ada di iOS dan Mac OS.

12:32Belum ada di OS dan di Android dulu.

12:36Tapi setelah langganan Npass dia keluar.

12:41Biasanya begitu ya.

12:43Kalau udah beli biasanya yang lain tiba-tiba muncul.

12:47Jadi ya udahlah, sudah terlanjur.

12:51Kita bahas password yang sering digunakan.

12:58Terus password yang aman tuh kayak gimana sih?

13:01Ada gak sih kriteria password yang aman?

13:04Subjektif gak sih?

13:06Password yang aman, kalau sekarang udah di delegasikan ke password manager.

13:11Tinggal generate aja.

13:13Random ya?

13:14Iya, randomize.

13:16Kalau dulu sebelum ada password manager itu biasanya ada rumusnya.

13:22Masih-masing orang punya rumus.

13:24Misalkan nih nama website-nya ditambah apa?

13:28Ditambah apa?

13:30Eka, anya, empat.

13:32Biar mengingat gitu.

13:34Jadi gak perlu ditulis.

13:36Diikat aja oh website-nya Google loh.

13:38Berarti Google minus Eka.

13:41Google plus Eka, empat.

13:43Enya besar.

13:45Tapi tetep aja sebetulnya sekali kebobol, sekali ketahuan misalnya.

13:51Oh iya, pattern-nya udah kelihatan.

13:54Kalau ada manusia, kalau mesin gak bisa tau kan.

13:58Kalau cuma kopas dari list data.

14:01Tapi kalau kebobol ke manusia ya gampang.

14:03Google tinggal diganti.

14:05Misalnya password Apple, ya udah tinggal Apple.

14:07Enya besar, K, empat, ya dan seterusnya kan.

14:10Dipikir sama juga bohong, gue dulu kayak gitu tuh empat lama.

14:15Dan ngerasa, wah I'm smart.

14:17Terus oh enggak.

14:19Ada yang juga ini, digeser, shift 1.

14:22Jadi misalkan kan kalau QRT kan.

14:25Iya QRT misalkan.

14:27Password-nya Q-W-E-R-T-Y.

14:30Digeser satu, jadi W-E-R-T-E-U.

14:34Iya ada yang begitu.

14:37Digeser ke kiri atau digeser ke kanan.

14:39Macam-macam, layang banyak.

14:41Kalau digeser ke kiri gak mungkin ya ada tab.

14:45Ada game password.

14:47Pernah lihat?

14:48Ada game password.

14:49Oh ini ya Neil.fun ini.

14:52Iya.

14:53Coba kita main.

14:54Coba, coba, coba.

14:56Mau pakai siapa?

14:57Present, present.

14:59Ntar ya.

15:00Segue atau Mas Riza?

15:02Mas Riza aja.

15:03Dibas lah siapa aja.

15:04Main sama-sama aja nih, ayo.

15:05Please choose a password.

15:07Pasti dikerjain nih KK.

15:10Your password masih include number.

15:13Satu.

15:15R-nya besar.

15:19Special Character?

15:20A-nya, Ed.

15:22A-nya diganti jadi Ed.

15:24Satu dua tiganya gak boleh ya.

15:26Digit in your password.

15:28Dikerjain tuh passwordnya.

15:31Harus, harus, kalau digitain harus dua lima gitu.

15:34Iya.

15:35Ini baru, baru enam nih.

15:37Gak bisa.

15:39Ya enggak lima, sudah setelah lima.

15:41Berapa dong?

15:42Baru berapa nih?

15:43Tangguh, tangguh sembilan.

15:45Sembilan, sembilan, sembilan lagi.

15:47Sembilan juga.

15:48Bukan.

15:49Oh itu, itu, itu.

15:51Ada counternya di kanan.

15:53Hah?

15:55Enggak.

15:56Oh itu jumlahan.

15:57Lengsnya, lengsnya.

15:59Ini kan baru satu, dua, tiga, empat.

16:01Berarti kan baru berapa nih?

16:03Tiga, enam, sepuluh.

16:04Angka lima aja lima kali.

16:06Lima, lima, lima, lima.

16:08Lima, lima, lima.

16:09Dua, tiga, empat, lima.

16:11Oh iya.

16:13Your password must include the month of the year.

16:15Pasti digerjain.

16:17Month of the year, nol dua gitu.

16:20Enggak kan?

16:22Februari.

16:24Ini angka kan?

16:26Dua belas.

16:29Kata-kata timenya deh.

16:31Menanda.

16:33Enggak kan?

16:34Enggak, enggak.

16:35Harus kosong dua misalnya.

16:37Nggak bisa.

16:39Nggak bisa.

16:41Nggak bisa.

16:42Malah ini yang error lagi tuh.

16:44Iya pasti kita harus perbaiki lagi.

16:46Kita punya rumus.

16:47Waduh.

16:49Itu aja nggak masuk.

16:51Buka aja search-nya.

16:55Apa?

16:57Buka lihat Javascript-nya lah.

16:59Ini, ini Javascript.

17:02Ini client-side ya?

17:04Pakai Nux loh dia.

17:06Application.

17:08Application.

17:10Source.

17:13Eh, nggak ada ya.

17:14Lihat file-nya gimana sih?

17:16File-nya di ini, source.

17:18Buka di resource.

17:20Source.

17:22Ini.

17:24Password game.

17:26Ad-load.

17:28Oh, ad-load sih.

17:30Itu iklannya.

17:32Nggak ada kali.

17:34Itu bawanya password game yang orange.

17:36Ini Nux, dia S2.

17:38Dia pakai Nux.

17:40Iya.

17:42Nah, tuh state-ks apa tuh?

17:44Tuh, 55505

17:46tuh kata Mas Dito tuh.

17:48Hah?

17:50Siapa tahu?

17:52Rahasia 55505 tuh.

17:54Oh, udah jumpa ya?

17:56Lima, lima-nya ada berapa tuh?

17:58Lima-nya ada lima.

18:00Lima-nya 4 kali, terus 05.

18:02Oh, 4.

18:04Lima-nya 4 kali.

18:06Hehehehe.

18:08Tuh, nggak bisa.

18:10Kata-kata diketik.

18:12Desember coba.

18:14Desember.

18:16Hah? Desember?

18:18Coba aja.

18:20Desember.

18:22Romanmural.

18:24V.

18:26Hehehehehehe.

18:28Hehehehehehe.

18:30Hehehehehehe.

18:32Hehehehehehe.

18:34Multiplied to 35.

18:36Hehehehehe.

18:38Untuk janiturnya, Pak.

18:40Udah.

18:42Ini kan sebetulnya.

18:44Nggak, ini sarkas aja, berjanjakan.

18:46Oh, sarkas.

18:48Nggak, maksudnya apa?

18:50Sunking password safety.

18:52Itu kan, ya kan,

18:54aplikasi-aplikasi kan berusaha

18:56ngerapin password safety, kan?

18:58Hmm.

19:00Macam-macam aplikasi.

19:02Bikin shared yang makin lama,

19:04makin sulit, kan?

19:06Pertamanya, kan cuma min-max.

19:08Apa? Minimal,

19:10beberapa karakter. Terus harus ada

19:12uppercase, lowercase. Lama-lama

19:14harus ada angkanya. Lama-lama

19:16harus ada simbolnya yang

19:18makin lama malah bikin user

19:20makin kesulitan.

19:22Ayo, lagi-lagi.

19:2412 karakter, 16 karakter lagi,

19:2620 hingga.

19:28Sekarang kan udah mulai obsolete juga, kan?

19:30Karena password generator, kita tinggal nyentang-nyentang

19:32settingnya, kan? Include special character,

19:34campur

19:36lowercase, uppercase, dan lain-lain.

19:38Kalau dulu kan

19:40biasanya ada, cuman ada

19:42minimum password, misalkan.

19:44Minimum 5 atau minimum 8

19:46sekarang ya, yang aman ya. Minimum 8.

19:48Tapi sekarang akhir-akhir ini,

19:50lihat, ada beberapa website

19:52yang membatasi maksimumnya.

19:54Maksimum

19:5618.

19:58Nggak boleh lebih.

20:00Ada. Kalau dulu kan

20:02biasanya.

20:04Struktur datanya.

20:06Jadi storage.

20:08Storage-nya ya.

20:10Biar nggak menuruhin.

20:12Biar nggak menuruhin.

20:14Gimana kalau password yang

20:18bisa boleh ada

20:20special character seperti

20:22dollar.

20:24Kemaren tuh sempet rame, tuh.

20:26Masa sih?

20:28Jadi justru ada

20:34satu aplikasi

20:36yang melarang menggunakan

20:38special character.

20:40Terutama special character

20:42yang berhubungan dengan coding.

20:44Kayak dollar.

20:46Berarti janjiannya

20:48pakai plaintext tuh.

20:50Apa plainstring?

20:52Enggak ngikutin ya. Yang itu.

20:54Yang aplikasi

20:56yang buat perpajakan.

20:58Korteks sih ya.

21:00Awalnya itu.

21:02Bikin password itu nggak boleh ada

21:04special character. Makanya langsung banyak

21:06yang ngebak, oh ini plaintext nih.

21:08Karena mengganggu

21:10coding.

21:12Terevaluasi.

21:14Para, para, para, para.

21:16Ya, begitulah.

21:18Oke.

21:20Nah, dari sisi

21:22kan, kalau dari sisi password

21:24kita kan syaratnya

21:26supaya password yang bagus itu

21:28yang pertama, susah ditebak.

21:32Jadi harus

21:34minimal

21:36characternya banyak.

21:38Ya, 8, 10, 12.

21:40Biasanya segitu kan. Lalu

21:42kombinasi yang terlalu besar,

21:44terlalu kecil,

21:46angka,

21:48spasi.

21:50Spasi jarang deh.

21:52Karena jadi susah bacanya.

21:54Kalau spasinya di depan. Kita

21:56yang salah baca.

21:58Atau kadang ada yang ngetrim.

22:00Ada yang ngetrim.

22:02Di trim. Ada.

22:04Spasinya di tengah, jangan di ujung.

22:06Oh iya, kalau di tengah, di ujung-ujung kan

22:08ada yang sistemnya ngetrim. Jadinya

22:10jadi rancu.

22:12Lalu

22:14password itu

22:16juga harus unik kan.

22:18Udah unik, panjang, susah ditebak.

22:20Sehingga susah.

22:22Jangan menggunakan password yang sama di

22:24website atau di service yang berbeda.

22:26Iya. Lalu

22:28apa namanya?

22:32Dari sisi

22:34karena harus kompleks

22:38password itu, makanya

22:40di tahun 2023

22:42apa 2024

22:44browser-browser mulai pada

22:46memberikan

22:48ini kan, memberikan

22:50akses untuk

22:52password manager kan, browser kan.

22:54Ya, ya, ya.

22:56Galak tuh. Maksudnya

22:58menggalakan password manager. Masih-masih ada.

23:00Dan bisa singkron antar browser satu

23:02sama lainnya.

23:04Kalau misalnya pakai Firefox,

23:06bisa singkron

23:08Firefox-nya ke device

23:10sesama networknya,

23:12Firefox. Chrome juga

23:14demikian dengan Android.

23:16iPhone dengan Safari-nya.

23:18Sehingga

23:22apa namanya? Kayak password manager

23:24itu menjadi sebuah

23:26kebutuhan.

23:28Keharusan.

23:30Harus pilih lah salah satu. Mau pakai yang

23:32mana ya. Dari Windows juga

23:34ada yang bawaan browser,

23:36ada yang layanan external.

23:38Layanan external, ya itu tadi

23:40kayak LastPass, Bitwarden.

23:42Jadi kalau kita, dan itu

23:44semua kan udah ada browser extension-nya

23:46kan. Jadi kita pakai Chrome.

23:48Kita bisa install

23:50Bitwarden extension untuk Chrome.

23:52Safari juga ada extension-nya. Jadi kita

23:54nge-store, nyimpan password-nya di

23:56satu tempat, tapi bisa digunakan di

23:58semua browser

24:00dan semua device.

24:02Nah, itu kan dari sisi

24:04user. Pakailah

24:06password manager dan selalu gunakan

24:08password yang random

24:10selalu di mana-mana.

24:12Lalu, kalau dari sisi

24:14developer,

24:16kalau mulai dari sisi front-end-nya dulu,

24:18ada apa nih

24:20yang perlu kita, kita

24:22tekankan

24:24kalau kita sebagai front-end developer.

24:26UX-nya kan, UI-nya

24:28kan, seperti apa.

24:30Coba buka link yang input.

24:32Password string.

24:34Ada nggak sih? Yang pasti

24:36yang pasti

24:38gunakan

24:40sesuai semantiknya.

24:42Gunakan sesuai semantik.

24:44Jadi kalau, kalau aplikasinya

24:46apa, kalau memang kita mau

24:48input atau

24:50minta masukkan dari user

24:52password, gitu ya.

24:54Gunakan, input type password.

24:56Jangan sembarangan. Jangan

24:58cuma input type text, terus

25:00kalau user ngetik, apa

25:02detek key event, terus key

25:04value-nya diganti jadi *,

25:06capek sendiri kan.

25:08Mending pake input type password,

25:10langsung di sensor.

25:12Betul. Dan kelebihannya adalah

25:14ketika user menggunakan

25:16password manager,

25:18akan muncul

25:20pilihannya. Eh, tapi jangan lupa

25:22di kombinasi sama atribut

25:24autocomplete. Coba buka link

25:26sebetulnya tuh.

25:28Oh iya.

25:30Ada di ini.

25:34Jadi apa? Sebetulnya input type

25:36password default pun

25:38mungkin ada kemungkinan bisa

25:40buat ngetrigger

25:42aplikasi atau extension

25:44password manager.

25:46Tapi ada granular control.

25:48Jadi untuk control yang lebih detail

25:50lagi, kita, kita bisa pakai

25:52atribut autocomplete.

25:54Nah, itu kenapa

25:56ada autocomplete? Karena

25:58apa? Biar field-field

26:00yang digunakan juga sesuai.

26:02Kita ngasih

26:04kayak prompt lah.

26:06Kayak prompt untuk password

26:08manager atau

26:10semacamnya. Autofield

26:12ini field untuk apa sih?

26:14Terus bisa kita matiin juga autocomplete

26:16off. Itu kasusnya misalnya

26:18sign up form kan. Kita

26:20baru mau bikin akun

26:22baru. Ya kan? Nggak mungkin

26:24di autocomplete. Jadi bisa kita matiin

26:26juga.

26:28Jadi bisa pakai

26:32off atau on. Atau

26:34itu tuh dibawah. Ordered list

26:36of space-separated

26:38tokens. Tokennya macam-macam

26:40kayak first name, last name,

26:42bla-bla-bla. Scroll ke bawah.

26:44Ya. Ini

26:46sangat penting terutama untuk

26:48yang menggunakan melalui

26:50handphone, atau

26:52mobile web ya. Kadang-kadang

26:54suka keselelu ketemu web

26:56yang

26:58username, password

27:00yang passwordnya itu tidak

27:02muncul. Begitu kita klik

27:04nggak muncul pilihan untuk

27:06password manager.

27:08Kita harus ke password manager

27:10masuk

27:12login. Login,

27:14copy passwordnya.

27:16Ketik website-nya.

27:18Oh iya, ngeser sama website-nya.

27:20Copy passwordnya.

27:22Copy passwordnya, balik lagi ke

27:24browser.

27:26Ya. Sedih sih.

27:28Sedih.

27:30Jadi pastikan menggunakan

27:32copy passwordnya.

27:34Autocomplete sama input type

27:36password. Yes.

27:38Itu harus

27:40banget kalau jaman sekarang yang

27:42terutama buat yang menggunakan

27:44password manager. Teman-teman di sini udah pakai

27:46manager semua kan ya? Ada yang

27:48belum kan?

27:50Ada yang masih ditulis si kertas?

27:52Di kertas.

27:54Di balik keyboard.

27:56Biasanya pakai sticky note.

27:58Sticky note ya.

28:00Ditempel di bawah monitor.

28:02Iya. Password Windows-nya ditempel

28:04di sticky note supaya kalau mau

28:06login ke Windows-nya.

28:08Oh, udah nggak lupa.

28:10Jadi passwordnya itu selalu di reset,

28:12tapi ditulis di sticky note.

28:14Passwordnya secure,

28:16tapi ditulis di sticky note.

28:18Sama aja.

28:20Nah, dimasukin ke Notion.

28:22Kenapa ini?

28:24Terus Notion-nya public-nya?

28:28Private ya. Harusnya ya.

28:30Public.

28:32Password Notion-nya dimasukin

28:36ke Notion nggak?

28:38Sebentar.

28:40Kalau ditaro di Notion,

28:42berarti kalau misalkan

28:44akses sesuatu, misalkan

28:46kita mau gmail.com, terus dia

28:48minta password. Kita buka Notion dulu

28:50gitu ya. Habis itu di-search gitu ya.

28:52Bisa ya?

28:54Iya, kayak password manager.

28:56Cuma plaintext.

28:58Tapi kan itu, search-nya ke seluruh

29:00dokumen kan?

29:02Bisa di satu dokumen aja search-nya juga ya?

29:04Bisa.

29:06Bisa.

29:08Dia ditaro di notes gitu ya?

29:10Tapi kan itu plaintext ya?

29:12Harus berhati-hati.

29:14Kenapa?

29:16Harus berhati-hati

29:20karena kalau tiba-tiba nggak sengaja kita

29:22publish, terus temen

29:24ngeliat, "Lah ini password semua nih."

29:26Lumayan, dilapor ke

29:28"Have I Been Found?"

29:30Lumayan.

29:32Mencing dilapor.

29:34Dia cobain masukin

29:36impersonate.

29:38Terus nanti lagi

29:40di-message ke Facebook

29:42saya dari masa depan.

29:44Saya dari masa depan.

29:46Kalau report nggak sih? Karena nggak ada extension

29:52buat browser. Jadi kalau

29:54yang dibilang Mas Riza

29:56tadi kan flow-nya sama, kalau lagi

29:58buka di HP,

30:00harus login, kan nggak bisa autocomplete

30:02tuh. Jadi harus tutup

30:04dulu browser-nya, buka Notion,

30:06buka table

30:08atau database atau note yang

30:10isi password, nge-serve dulu

30:12dan seterusnya.

30:14Yang sengsara, kalau begitu buka Notion

30:16harus login juga.

30:18Nah itu tadi, makanya

30:20gue tanya password Notion-nya

30:22ditaro di Notion juga.

30:24Sama sih, kalau itu

30:26password manager juga kita harus ingat

30:28satu password. Tapi minimal

30:30sekarang password manager ada pakai

30:32sidik gari kan, kalau yang punya itu kan.

30:34Tapi kan backup-nya,

30:36fallback-nya tetap ada

30:38password-nya. Ya tetap.

30:40Rekomendasi

30:42password manager

30:44kalau yang baru rekomendasi

30:46kalau mau pakai yang

30:48sudah proven. Maksudnya yang

30:50perusahaan-perusahaan gede lah, kayak Google.

30:52Chrome ada kan,

30:54pakai aja yang itu.

30:56Terus yang gratis kan. Ini kan di safari ini.

30:58Ya nggak, maksudnya kekurangan

31:02dan kelebihan-nya

31:04maksudnya nggak ada extension

31:06Chrome password manager untuk safari

31:10kan. Ya dan sebaliknya.

31:12Eh tapi kalau keychain,

31:14kalau Apple,

31:16kalau macOS

31:18punya ekosistem Apple

31:20di keychain itu mungkin integrate

31:22ke semua browser ya.

31:24Buat apa?

31:26Buat password manager di web.

31:30Iya safari,

31:32kalau kita buka safari,

31:34kita buka safari,

31:36itu bakal di prompting.

31:38Ya pokoknya ada UI-nya sendiri untuk password manager.

31:40Dan itu akan dengan

31:42sendirinya di save ke keychain,

31:44ke sync ke iCloud kita.

31:46Jadi misalnya kita ganti iPhone,

31:48ganti iPhone baru.

31:50Ya udah, password-nya ada semua,

31:52kita bisa login ke semua.

31:54Tergantung.

31:56iPhone-nya, waktu sudah kita

31:58ganti iPhone-nya sudah bayar dia.

32:00Kayaknya belum, kalau belum nggak bisa.

32:02Jangan kesana dong.

32:04Udah legal belum,

32:06iPhone-nya udah ya, udah legal

32:08bisa dijual melikan ya.

32:10Kalau belum kan nggak boleh.

32:12Cepet nggak boleh kan.

32:14Kelanggan

32:16BM, black market iPhone.

32:18Itu kalau berdasarkan

32:22browser atau OS ya,

32:24kalau yang layanan khusus

32:26dedicated password manager,

32:28kan ada apa?

32:30Tadi Npass-nya.

32:32Dulu gue pakai

32:34Npass.

32:36Tapi Npass sering banget liking.

32:38Jadi harus hati-hati.

32:40Teman-teman harus cari...

32:42Npass dulu pernah, Npass dulu pernah kejadian.

32:44Sering.

32:46Sama UI-nya, nggak tahu lah,

32:48kayak agak awkward gitu lah.

32:50Dulu punya pertama banget

32:52kenal password manager, gue pakai

32:54Npass. Terus sekitar

32:563 tahunan lalu pindah Bitwarden.

32:58Udah nggak pernah cari-cari lagi.

33:00Nggak pernah pindah lagi.

33:02Self-hosted ya.

33:04Self-hosted,

33:06Bitwarden bisa kan.

33:08Punya server sendiri.

33:10Self-hosted.

33:12Oh, self-hosted juga bisa.

33:14Cuma gue nggak senyat gitu.

33:16Sampai sekarang pakai yang free, aman-aman aja.

33:18Dan salah satu fitur menariknya,

33:20ini yang bisa nyambung ke topik lain,

33:22udah support Pusky juga.

33:24Pusky, iya. Tadi ada yang nanya

33:26perkembangan Pusky ini.

33:28Si apa? The Great Solomon.

33:30Nanti kita bahas ya.

33:32Sabar-sabar.

33:34Tadi di komen juga ada apa nih? Passport.

33:36Banyak ya.

33:38Ada Passport, ada Helogin.

33:40Namanya Eka.

33:42Ada Helogin,

33:44ini juga baru denger nih. Helogin.

33:46Ini,

33:48ada Helogin yang kayak Hey-nya

33:50punya si itu nggak sih?

33:52Bisa lihat password link?

33:54DHH.

33:56Bukan.

33:58Oh, ini info yang tadi nih.

34:00Apple Kitchen udah pindah ke Apple Password sekarang.

34:02Tapi bukaannya di Passcode.

34:04Jadi kalau orang inti

34:06Passcode kita, dia bisa buka password.

34:08Bahaya ya? Passcode

34:10iPhone.

34:12Penasaran juga nih.

34:16Helogin.

34:18Baru denger.

34:20Oh, password manager without

34:24password master password.

34:26Wah, ini menarik.

34:30Belum buka, belum share-in.

34:32Oh ya, sorry.

34:34Helogin.com

34:36Ininya menarik ya.

34:38Password manager without

34:40master password.

34:42Pake

34:44to-fighter authentication ya.

34:48Jadi kalau

34:50homologin harus pake 2FE ya?

34:52Ada pricing?

34:56No, gratis.

34:58Iya, ada free tier.

35:00User management.

35:02Oh, ini buat bisnis ya. Berarti yang gratis

35:04pun udah bisa ya.

35:06Ini ada mobile-nya nggak?

35:08Aplikasi mobile-nya ada nggak?

35:10Itu tulisan yang ada tuh. Yang di free.

35:12Oh, confirm.

35:14Smartphone ya. Sorry, bukan mobile.

35:16Bukan-bukan.

35:18Android atau iOS-nya harusnya ada?

35:20Nggak ada ya. Oh, ada nih.

35:22Ada-ada.

35:24Smartwatch juga bisa.

35:26Mantap.

35:28Extension-nya juga ada buat Chrome, Firefox,

35:30Safari.

35:32Udah lengkap ya? Udah lengkap, aman.

35:34Oke. Menarik.

35:36Masa pindah lagi? Nggak.

35:38Ya nggak, nggak usah FOMO.

35:40Ini buat teman-teman

35:42yang nonton, yang masih lagi

35:44menonton. Oke.

35:46Password. Ini banyak

35:48yang baru dengar juga nih.

35:50Ini ya, open source password manager

35:52for teams.

35:54Kalau mau, gini misalnya, pakenya

35:56utama kan one password.

35:58Terus password-nya buat one password

36:00itu disimpan di password.

36:02Password disimpan di...

36:04Ngapain?

36:06Terakhir banget

36:08semua listnya disimpan di

36:10Notion.

36:12Masa-masa dipublikin, gitu deh.

36:14Iya.

36:16Nah, ini GDPR ya.

36:18Feature-nya.

36:20Oh, ini password

36:22ini kita bisa self-hosted

36:24atau not managed.

36:26Ya, dan apa?

36:28Perspektifnya buat team ya

36:30ini. Ya, ya, ya.

36:32Für login dan password

36:34ini. Iya sih.

36:36Dua-duanya ya? Gua aja.

36:38Gua sampe sekarang password antar team. Oh, iya.

36:40Di tempatnya.

36:42Masih pake Slack.

36:44Iya. Biasanya kita kirim

36:46pasuat kan plain text ya.

36:48Ini kirim langsung lewat WhatsApp, gitu.

36:50Iya.

36:52Mungkin aja, gitu.

36:54Atau

36:56kirim lewat email username

36:58password, gitu.

37:00Bitwarden

37:02Eka pernah nyoba Bitwarden?

37:04Pakai malah.

37:06Bitwarden

37:08memuaskan. Apa? Maksudnya

37:10oke kok. Retier-nya juga udah oke.

37:12Maksudnya standalone aplikasinya ada.

37:14Extension untuk

37:16semua browser yang umum ada.

37:18Android.

37:20Ada app-nya. IOS ada.

37:22Uja support.

37:24Pasti juga.

37:26Dan dia open source ya

37:28kalau nggak salah ya Bitwarden ya?

37:30Itu tadi. Apa?

37:32Kalau yang

37:34standarnya hosted di club

37:36mereka sih ya nggak tahu. Cuma

37:38open source yang buat self-hosted.

37:40Ada GitHub-nya nggak?

37:42Bukan open source kali ya?

37:44Freeware kali ya?

37:46Open source apa freeware?

37:48Iya. Antara dua.

37:50Free atau open source. Klien-nya open.

37:52Server-nya open.

37:54Oh. Open semua.

37:56Open semua ini.

37:58Bisa self-hosted.

38:00Bukan masalah self-hosted aja sih.

38:02Klien-nya juga

38:04open source.

38:06Ini menarik nih.

38:08Segitu.

38:10Percaya diri mereka.

38:12Membangun crypto.

38:14Datanya open nggak?

38:16Anjir serem banget.

38:18Tapi sebenarnya di pikir-pikir bahaya

38:20nggak sih kalau password

38:22manager open source. Maksudnya

38:24kontennya bisa dikelajarin.

38:26Ya di satu sisi itu bisa membuktiin

38:28kompetensi mereka kan. Tapi kan

38:30kalau orang yang hacker-hacker

38:32maksudnya lagi berusaha cari celah

38:34bisa melajarin kode mereka lebih

38:36gampang di tech classic.

38:38Ada juga, ya yang

38:40bangun ini mungkin juga sudah ahli security

38:42yang peduli soal

38:44jadi sistem

38:46crypto

38:48bukan cryptocurrency, crypto

38:50cryptography.

38:52Cryptography-nya ya sudah dilakukan

38:54sedemikian.

38:56Maksimal mungkin.

38:58Dan mereka pasti bukan kayak itu ya.

39:00Apa namanya?

39:02Box Bounty.

39:04Box Bounty.

39:06Dan data yang mereka

39:08simpan kan mungkin sudah nggak ada lagi

39:10password kita. Password kita sudah di hash.

39:12Sedemikian lupa.

39:14Di encrypt.

39:16Dan saat install server

39:18private key-nya itu hanya disimpan

39:20di server-nya kita. Nggak ada tempat lain.

39:22Kalau private key-nya

39:24yang hilang ya itu salahnya kita.

39:26Atau misalnya private key-nya yang bocor

39:28itu salah kita.

39:30Bukan salah

39:32si Bitwarden-nya.

39:34Bukan salah si Bitwarden-nya.

39:36Ada pertanyaan yang menarik juga nih.

39:40Password manager berbasis blockchain

39:42kita belum tahu. Ada contoh

39:44ini nggak?

39:46Apakah lebih aman? Nggak tahu juga.

39:48Kenapa harus di blockchain?

39:50Supaya apa? Kalau blockchain itu kan dia lebihnya

39:52bedanya sifatnya

39:54imoutable. Garingan network

39:58sama device lain juga kan?

40:00Bukan. Sifatnya imoutable

40:02blockchain itu. Imoutable kan.

40:04Kalau sudah di sharing, misalkan

40:06di store password, habis itu nggak bisa

40:08berubah gitu. Nggak bisa berubah.

40:10Funksinya apa gitu? Funksinya

40:12apa yang membuat itu lebih aman gitu?

40:14Kita nggak tahu sih soalnya

40:16kita belum mendalami

40:18kesana sih.

40:20Teknologi yang dipakai sama

40:22blockchain kan memang cryptografinya

40:24untuk menghashing itu.

40:26Tapi datanya kan imoutable.

40:28Sehingga kalau password disimpan

40:30dalam imoutable...

40:32Apa dong?

40:36Belum nangkap saya.

40:38Oh kirain.

40:40Mungkin ada sesuatu yang kita nggak tahu.

40:42Kirain mau ngelanjutin kalimat.

40:44Iya.

40:46Lagi mikir-lagi mikir.

40:48Apa ya?

40:50Tapi menarik untuk

40:52dikulik. Mungkin

40:54suatu saat kita perlu cari orang yang

40:56benar-benar paham

40:58blockchain. Oh passwordnya

41:00berarti itu. Secure banget.

41:02Jadi kalau mau di has itu harus

41:04menggunakan GPU kan?

41:06Mahal juga

41:08kayaknya.

41:10Malah repot.

41:12Malah repot ya.

41:14Oke.

41:16Sebelum lupa ya.

41:18Soal password.

41:20Jangan sampai...

41:22Meskipun kita sudah berusaha

41:24aman tetapi kita pakai

41:26network yang terbuka nih.

41:28Wi-Fi public

41:30yang nggak pakai encryption.

41:32Dan

41:34situs tujuan yang kita pakai nggak ada

41:36HTTPS-nya.

41:38Jadi password yang lewat

41:40di network itu akan

41:42plaintext.

41:44Jadi bisa disniffing.

41:48Jadi kalau misalkan

41:50mau akses kayak

41:52mobile banking atau

41:54e-banking

41:56jangan di Wi-Fi

41:58di kafe.

42:00Jangan pakai VPN.

42:02Di rumah aja.

42:04Ya atau pakai VPN deh.

42:06Pakai VPN.

42:08Jangan pakai jaringan mobile.

42:10Jangan pakai

42:12jaringan mobile.

42:14Jangan pakai public

42:16access Wi-Fi.

42:18Yang open.

42:20Biasanya banyak itu

42:22Wi-Fi.

42:24Biasanya

42:26kalau misalnya kita ke kafe

42:28Wi-Fi-nya open.

42:30Tapi kan nanti setelah masuk ke Wi-Fi-nya

42:32baru muncul pop-up-nya.

42:34Kalau mau kita masukin password.

42:36Tapi kan Wi-Fi-nya open.

42:38Gak ada WPA2 security-nya.

42:40WPA2 atau WPA.

42:42Gak ada password-nya.

42:44Maksudnya, data yang lewat

42:46via radio cryptocurrency itu

42:48itu telanjang.

42:50Gak ada enkripsinya.

42:52Bisa dibaca dengan kata telanjang.

42:54Kita merasa itu aman.

42:56Karena sudah pakai login.

42:58Loginnya via pop-up.

43:00Sebenarnya tidak.

43:02Traffic datanya

43:04yang gak aman.

43:06Traffic datanya yang gak aman.

43:08Nah dan itu biasanya kan nih

43:10public place yang

43:12tempat umum yang banyak orang ya.

43:14Kayak airport.

43:16Starbucks.

43:18Hotel.

43:20Hotel termasuk ya?

43:22Ya ada hotel yang pakai

43:24begituan.

43:26Hotel sering sih.

43:28Biasanya nomor kamar kita

43:30password-nya last name-nya kita.

43:32Biasanya.

43:34Itu secure gak?

43:36Tanjang.

43:38Tapi Wi-Fi-nya sendiri bisa langsung

43:40konek.

43:42Oh iya langsung konek.

43:44Saya kalau ke hotel bersama

43:46keluarga biasanya saya bawa Wi-Fi-nya

43:48saya sendiri.

43:50Biasanya Wi-Fi.

43:52Colokan LAN.

43:54Saya bikin pakai Wi-Fi sendiri

43:56dan saya konek ke Wi-Fi sendiri.

43:58Wi-Fi-nya saya ada

44:00VPN

44:02ke server saya sendiri.

44:04Jadi semua anggota keluarga

44:06saya yang pakai buat

44:08net.

44:10Mudah-mudahan.

44:12Niat sekali ya.

44:14Mau liburan aja harus

44:18bawa perangkapan segitunya.

44:20Mumpung sudah banyak sekalian bawa-nya

44:22bawa nambah Wi-Fi gak?

44:24Sama aja jadinya.

44:26Ya gak nambah banyak kalau udah punya.

44:28Kalau yang belum punya kan harus beli dulu.

44:30Kan kecil mas

44:32gak usah yang segede, gak usah yang full.

44:34Yang segini aja gitu loh.

44:36Harganya kan gak

44:38kecil.

44:40Anyway balik ke password.

44:44Itu kan dari sisi front-end.

44:46Pakailah yang sudah

44:48ready ya web API.

44:50Yang sudah ready.

44:52Kemudian

44:54secara UI dan UX

44:56follow aja yang sudah best standard practice.

44:58Gak usah dibuat aneh-aneh kalau

45:00kadang ada yang password strength.

45:02Saya gak tahu ada gak sih yang

45:04menyediakan password strength gitu.

45:06Ya kadang lihat.

45:08Untungnya

45:10sekarang makin jarang ya.

45:12Sekarang bukannya

45:14orang udah

45:16lebih banyak yang menggunakan

45:18service ya. Kayak Augero,

45:20Firebase, apalagi

45:22Supabase.

45:24Macam-macam

45:26Cognito, ada

45:28banyak kan sekarang.

45:30Ada macam-macam sekarang banyak ya.

45:32Masih kayaknya orang udah

45:34semakin...

45:36Betul.

45:38Gak menghandle autentikasi.

45:40Siapa sih yang masih bikin login manual.

45:42Kayaknya sekarang udah gak ada ya.

45:44Antara satu udah pake service, kedua mungkin udah

45:46disediakan sama framework kayak Laravel,

45:48Phoenix, Ruby on Res, dan lain-lain.

45:50Dan udah ada.

45:52Jadi

45:54cuman sekali lagi

45:56tetep harus tahu ya cara kerjanya.

45:58Jangan sampai hanya menggunakan

46:00aja.

46:02Lalu, kalo

46:04jelas sisi front-end.

46:06Ya, ngirimnya itu.

46:10Pas user udah nge-tick password,

46:12kita kirimnya kan gak boleh, gak mungkin

46:14pake plaintext yangnya.

46:16Nah, itu berarti buka link

46:18yang tentang Salted itu.

46:20Eh, gak deh.

46:22Harus dikasih garam ya. Sebelum ngirimin password,

46:24harus dikasih garam.

46:26Apa ini? Inspektor Laravel

46:28password? Itu Laravel sih.

46:30Bukan, belum ada deh linknya

46:32tentang... Oh, belum ada.

46:34Kalau gak salah nih ya, kalo kita pake

46:36tipe password yang dikirimkan itu

46:38gak bisa disniffing loh lewat

46:40HTTP post.

46:42Ya maksudnya,

46:44di DevTool

46:46gak keliatan.

46:48Tipe password.

46:50Coba deh.

46:52Kalau kita punya password.

46:54Iya.

46:56Terus bikin form.

46:58Enggak, yang tadi aja.

47:00I have been found kan itu

47:02password kan?

47:04Kelihatan gak?

47:06Ini linknya yang proper

47:08tentang hashing

47:10dan salting.

47:12Ini kan password kan? Ini gak bisa keliatan.

47:14Kita liatinya di mana?

47:16Network.

47:18Gak keliatan, maksudnya di mana?

47:20Oh iya, sorry.

47:22Kita liatinya di mana?

47:24Di Network.

47:26Ya, Network sama Doc.

47:28Eh, gak tau. Coba aja.

47:30Dia ajak sejak sih.

47:32Pencet dulu, pound.

47:34Udah?

47:36All? Ini?

47:38Iya.

47:40Di...

47:42Get. Kok get?

47:44Loh, itu gak lama aja kan.

47:46Coba lagi.

47:48Try.

47:50Get.

47:52Get.

47:54Postnya gak ada ya?

47:56Ini formnya apa?

47:58Input.

48:00MethodPost.

48:02Di Network gak keliatan?

48:10Waktu di Android?

48:12Enggak.

48:14Coba ya.

48:16Nah, ini dia post dulu kan?

48:18Diklir dulu. Diklir.

48:20Diklir kan?

48:221, 2, 3, 4, 5, 6.

48:24Gak ada.

48:26Itu yang 7C parat bentuk apa isinya?

48:28Get.

48:30Oh, ini cuma ngambil...

48:32response nya apa?

48:34Pake API.

48:36Dia pake...

48:38Response nya apa?

48:40Response.

48:42Apa ini?

48:44Dia ini, dia hash.

48:46Eh, dia encrypt.

48:48Dia lewat ini.

48:50Fetch nya...

48:52Koneksinya lewat ini dia.

48:54Kayaknya lewat...

48:56Lewat, lewat, lewat, lewat.

48:58Background.

49:00Background fetch.

49:02Gak ada ya?

49:04Gak ada. Udah lama.

49:06Input type, password.

49:08Yang di MDN.

49:10Ini.

49:12Bukanya dimana nih?

49:16Langsung.

49:18Gak bisa ya.

49:20Itu output itu kalo...

49:22Ini output.

49:24Kita gak bisa buka...

49:26Gak bisa buka DevTool disini.

49:28Bukan iframe?

49:30Bukan iframe?

49:32Iframe.

49:34Klik kanan, buka ini nya, buka runner nya.

49:36Di new tab.

49:38New tab?

49:40Di iframe, iframe itu kan ada...

49:42Iframe HTTPS 4886.

49:444886.

49:46Ini.

49:48Gini.

49:50Mana?

49:52Gak ada, kosong.

49:54Sebor.

49:56Gak kelihatan.

49:58Ya udahlah, mungkin temen-temen...

50:00Kalau gak salah sih gak kelihatan ya.

50:02Coba saya cari dulu.

50:04Network coba ya.

50:06Kita coba ini ya.

50:08Ini tes.

50:101, 2, 3, 4, 5, 6, 7, 8.

50:121, 2, 3, 4, 5, 6, 7, 8.

50:141, 2, 3, 4, 5, 6, 7, 8.

50:161, 2, 3, 4, 5, 6, 7, 8.

50:18Ya coba saya...

50:20Gak ada dia.

50:22Dia kan gak ada server nya.

50:24Oh ya dia gak ngirim.

50:26Dia kantong UI doang.

50:28Coba saya create.

50:30Gak bisa, gak bisa.

50:32Lanjut aja dulu saya coba create ini aja.

50:34Nah.

50:36Kita liat yang ini ya.

50:38Apa namanya?

50:40Kita liat yang ini.

50:42Hashing dan salting.

50:48Ini kayak...

50:50Ini bukan framework spesifik ya.

50:52Ini kayak konsepnya aja dulu.

50:54Ya, jadi...

50:56Ada perbedaan antara...

50:58Sesuatu atau teks...

51:00Yang bisa di-encode dan di-decode.

51:02Dua arah kan.

51:04Jadi kita bisa encode.

51:06Terus di-code.

51:08Ada yang hanya satu arah.

51:10Jadi hanya bisa di-encode, tapi gak bisa di-decode.

51:12Nah hashing dan salting ini bagian dari itu ya.

51:14Jadi...

51:16Kita bisa mengubah teks yang tadinya

51:18teks bermakna.

51:20Misalkan halo apa kabar.

51:22Kemudian di-encode jadi...

51:24Jadi apa ya...

51:28Seperti random gitu ya. Walaupun bukan random ya.

51:30Jadi angka-angka acak gitu.

51:32Tapi gak bisa dibalikin.

51:34Kita gak...

51:36Kalau sudah di-encode.

51:38Gak bisa kita balikin untuk kita baca lagi.

51:40Kembali ke teks semula.

51:42Itu yang membedakan antara...

51:44Encode dan hashing.

51:46Kurang gede.

51:50What is hashing? Nah ini...

51:54Nah, ini penjelasan yang...

51:56Kalau menurut gue lumayan...

51:58Gampang dicerna sih.

52:00Sama siapapun yang walaupun gak terlalu...

52:02Ngerti kritografi.

52:04Dan lain-lain.

52:06Kayak maksudnya ini practical use-nya.

52:08Buat kita yang...

52:10Misalnya ngurus frontend.

52:12Atau fullstep.

52:14Jadi dari password yang...

52:18Plain.

52:20Yang ada di user.

52:22Dia masukin passwordnya.

52:24Itu di hash.

52:26Dan jadinya seperti ini.

52:28Dan gak bisa dibalikin.

52:32Jadi dari hash ke password gak bisa dibalik.

52:34Jadi...

52:38Ini memastikan bahwa...

52:40Yang punya server gak bisa tahu passwordnya user.

52:42Itu penting.

52:44Karena...

52:46Dan misalnya ada kasus data kebobolan atau apa.

52:48Yang gak langsung...

52:50Coba bayangin kalau semua password di Symphony Plain Text.

52:52Kalau misalnya...

52:54Si company-nya.

52:56Si pembuat website-nya.

52:58Kena hat.

53:00Semua kan.

53:02Habis semua data-data pribadi.

53:04Udah ada email.

53:06Udah ada password.

53:08Plain Text pula.

53:10Terus ada nama ibu kandung.

53:12Aduh, selesai.

53:14Udah tahun.

53:16Penjelasannya itu tuh.

53:18Developers usually run a function to...

53:20Convert this password into something...

53:22That looks completely different.

53:24Melalui suatu algoritma...

53:26Matematis.

53:30Biasanya menggunakan BigCrip.

53:32Atau apa kalau ini?

53:34Crip.

53:38Crip tool. Masing-masing platform...

53:40Ada punya ya?

53:42Kasa algoritma itu ada banyak.

53:48Ada MDX, NG5,

53:50SHA,

53:52SHA1, SHA2.

53:54Terus...

53:58Ya.

54:00Md5 sudah obsolete.

54:02Md5 jangan.

54:04Md5 jangan lagi.

54:06Karena...

54:08Lebih gampang collision ya.

54:10Kalau Md5.

54:12PBK...

54:16DF2T.

54:18Ini kepanjangnya apa ini?

54:20Ada password based...

54:24Scroll aja ke bawah ada penjelasannya.

54:26Password based key derivation function 2.

54:28Oh, versi 2 ya.

54:30National Institute of Standard and Technology.

54:32Nah detailnya bisa di...

54:38Itu tuh link.

54:40Password storage cheat sheet.

54:42BigCrip, kalau nggak salah ada BigCrip 2.

54:46BigCrip 2?

54:48Ya, kalau nggak salah ya.

54:50Kalau nggak salah. Mungkin saya salah.

54:54Nah, pertanyaan bagus nih.

54:56Dari Reza Irfan Widjaya 23.

54:58Kalau satu arah, cara verify passwordnya gimana?

55:00Ayo, ada yang bisa dijelaskan?

55:02Yang ini?

55:04Ya itu di artikelnya juga ada sih.

55:06Ada ya.

55:08Ya kan password hashingnya kan sama ya.

55:10Apa namanya?

55:12Kalkulasinya sama.

55:14Pas user mau masuk lagi, udah ngetik lagi.

55:16Itu, apa?

55:18Disamain aja, hash passwordnya disamain.

55:20Nah.

55:22Kalau sama, ya besok kalau user ngetik lagi...

55:24Pasti hasilnya tetap sama.

55:26Jadi yang dibandingin adalah hash-nya, bukan passwordnya.

55:28Hash-nya, bukan password ininya.

55:30Jadi setiap ada user login,

55:34passwordnya diambil,

55:36terus di BigCrip juga, dicek.

55:38BigCripnya sama nggak sama yang ada di database?

55:40Kalau sama, berarti secara

55:42otomatis ininya sama.

55:44Nah, karena nggak bisa dibalikin,

55:46kalau pun si hash passwordnya

55:48bobol, kan yang

55:50dapat, yang bisa mengakses

55:52hash passwordnya nggak bisa

55:54kebalikin ke password aslinya, kan?

55:56Karena cuma satu arah.

55:58That's the point, satu arah.

56:00Kenapa satu arah?

56:02Ya, betul.

56:04Jadi bukan value-nya, tapi hasil

56:06acaknya yang...

56:08Sebenarnya nggak acak sih.

56:10Karena kalau acak pasti bisa beda, kan?

56:12Jadi pokoknya apa yang

56:14dia entry disini, kalau sama, dia hasilnya juga.

56:16Jadi itu semua kayak fungsi matematis aja.

56:18Fungsi matematika, betul.

56:20Asal jangan passwordnya

56:22sebelum kita simpan atau sebelum kita hash,

56:24ditambahin

56:26time-stamp.

56:28[tertawa]

56:30Time-stamp buat apa?

56:32Ya, biar...

56:34Biar nggak ada yang bisa login lagi.

56:36Biar nggak ada yang bisa login lagi.

56:38[tertawa]

56:40[tertawa]

56:42Selalu ini ya,

56:44terus tombol "forget password"

56:46diimplementasi.

56:48Jadi gimana mau masuk?

56:50[tertawa]

56:52Iya, ngomongin sama password kan

56:54ribet ya. Apalagi semakin kesini

56:56kan "wah, harus secure" segala macem.

56:58Tapi kan akhir-akhir ini banyak yang

57:00pakai cara

57:02passwordless, kan? Jadi nggak pakai password.

57:04Masukin email, terus di email-nya itu

57:06dikasih

57:08beberapa

57:10angka OTP.

57:12Terus abis itu kita bisa

57:14klik atau bisa masukin

57:16OTP-nya, kan? Jadi

57:18tanpa perlu password.

57:20OTP juga password, one-time password.

57:22Iya, cuma kan kita nggak perlu menghapus.

57:24Cuma bukan

57:26bebannya bukan di user dan

57:28bukan kita pembuat aplikasi

57:30untuk nge-store

57:32si hash password di database itu

57:34ya. Maksudnya.

57:36Magicling, magicling, benar-benar.

57:38Yang pakai ini sekarang si Slack.

57:40Slack itu pakai magicling kalau

57:42login. Oh, pakai magicling.

57:44Banyak yang pakai

57:46ada kelemahan-nya juga

57:48kalau magicling. Kalau

57:50si email-nya si

57:52yang bersangkutan itu ke

57:54hijack, ya bisa

57:56login. Oh iya, benar-benar.

57:58Iya, itu plus-minus sih.

58:00Oh iya, benar juga ya. Email-nya

58:04jadi semakin krusial ya.

58:06Tapi kan

58:08forget password juga kayak gitu, kan?

58:10SMS juga bisa ke hijack loh.

58:12Kalau si

58:14memang kita

58:16orang yang punya high value

58:18ya, dan benar-benar jadi target,

58:20dan benar-benar ingin ada yang benar

58:22jahilin, ya

58:24ada aja untuk nge-hijack

58:26SMS.

58:28Itu bisa.

58:30Satu hit OTP bayar berapa?

58:34Oh, jaman dulu. Email kan?

58:38Enggak, kalau OTP

58:40SMS harus.

58:42Oh, SMS bayar lah.

58:44Kalau SMS ya.

58:46Kalau email

58:48praktikally gratis nggak sih?

58:50Hampir gratis lah ya, nggak gratis.

58:52Tapi nggak mahal kan?

58:54SMTP server kan?

58:56Bayar kan?

58:58Ya, semahal

59:00SMS ya mungkin.

59:02Ya.

59:04Nggak, istilahnya

59:06affordable lah ya, kalau email ya.

59:08Affordable ya.

59:10Wah, by the way tadi salting belum dibahas.

59:12Bawahnya di artikel itu

59:14masih ada tambahannya bawah.

59:16Oke, tadi hashing, dibawahnya

59:18ada salt.

59:20Mana ini ya?

59:22Itu mengantisipasi user yang

59:24passwordnya sama

59:26kebetulan.

59:28Luar juga itu sana efek.

59:32Kalau salting itu

59:34bedanya apa? Bedanya

59:36adalah, ini contohnya

59:38Michael & Bob.

59:40Use passwordnya sama.

59:42Oh, passwordnya sama ini.

59:44Michael sama Bob ini ada hubungan apa mereka, passwordnya sama?

59:46Kebetulan aja ternyata bisa.

59:48Ya.

59:50Di Zafami tadi ada 3 orang pakai.

59:52Iya.

59:54Ajaib juga tuh.

59:56Oke.

59:58Mereka pakai hashing.

1:00:00Kalau pakai has

1:00:02sama, hasilnya akan sama.

1:00:04Hasilnya akan sama.

1:00:06Yang kayak tadi ya kita ambil. Karena tadi fungsi

1:00:08matematis kan.

1:00:10Kalau passwordnya si Michael

1:00:12ditambahkan garam,

1:00:14garamnya itu adalah

1:00:16UX2ZE.

1:00:18Kalau si Bob, garamnya

1:00:20adalah 0...

1:00:22Asil akhirnya

1:00:24adalah,

1:00:26oh, dikasih garam

1:00:28dulu baru di has ya.

1:00:30Berbeda.

1:00:32Gantung algoritma kita, mau kita tambahin

1:00:34garamnya dimana.

1:00:36Makanya

1:00:38saya bilang, ini maksud saya tadi,

1:00:40jangan sampai garam yang kita tambahin itu adalah

1:00:42time frame, time stamp, sorry.

1:00:44Time stamp.

1:00:46Gak bakal bisa matching lagi.

1:00:48Iya.

1:00:50Itu maksud saya, kalau saltnya itu kita pakai

1:00:52time stamp jadi susah.

1:00:54Oke, jadi ada yang

1:00:56digaramin dulu,

1:00:58ini garamnya belakangan ya, saltnya.

1:01:00Jadi biasanya disimpan

1:01:02di database, saltnya

1:01:04kita hashing.

1:01:06Saltnya kita hashing.

1:01:08Eh, salah. Salt nggak bisa di hashing.

1:01:10Saltnya bisa di...

1:01:12Saltnya itu bisa kita random

1:01:14tapi bisa kita pakai 2-way encryption.

1:01:16Bisa dibalikin.

1:01:18Dan yang

1:01:20di passwordnya adalah hasil

1:01:22salt dengan has.

1:01:24Ada juga teknik

1:01:26seperti itu. Cuman jadi berat.

1:01:28Jadi banyak komputasi, ya.

1:01:30Berapa round expectation buat salt?

1:01:34Maksudnya apa nih?

1:01:36Bisa berapa kali di...

1:01:38Bisa berkali-kali.

1:01:40Bisa berapa kali digaramin.

1:01:42Ada, kalau...

1:01:44coba ya, pakai php

1:01:46function itu bisa kok.

1:01:48Nah, itu sudo code-nya

1:01:52itu tuh penjelasannya.

1:01:54Di screen, scroll ke atas.

1:01:56Check if

1:01:58provided username can be found in database.

1:02:00If yes, get the salt that

1:02:02is stored along with username.

1:02:04Jadi salt ini disimpan di database.

1:02:06Database user.

1:02:08Iya.

1:02:10Row ya, per user ya.

1:02:12Scroll ke atas, scroll ke atas sedikit.

1:02:14Ada penjelasannya di atas. Nah, as you can see

1:02:16blah, blah, blah.

1:02:18It's important to note that each user's

1:02:20password should have its own

1:02:22unique salt. Kayaknya satu... apa?

1:02:24Saltnya itu unique

1:02:26in relation to

1:02:28apa?

1:02:30Each user.

1:02:32In fact, the salt

1:02:38that has in the username

1:02:40usually stored together.

1:02:42Berarti saltnya ini

1:02:44degenerate secara otomatis

1:02:46oleh sistem.

1:02:48Pada saat kita mau register.

1:02:50Ya, waktu usernya

1:02:52register.

1:02:54Dan disimpan di database.

1:02:58Bisa simpan ya.

1:03:00Nah, ini adalah

1:03:02flow-nya ya.

1:03:04Jadi, detect dulu username-nya ada

1:03:06di database atau enggak. Kalau ada, berarti

1:03:08ambil... ambil garamnya.

1:03:10Ya, kemudian

1:03:12masukkan garam ke dalam password.

1:03:14Dan kemudian

1:03:16di hash.

1:03:18Gira cik.

1:03:20Tuh, ada yang

1:03:22ada yang ini nih, ada yang

1:03:24nggak fokus sama keyboardnya

1:03:26Ivan. Keyboard baru, keyboard baru.

1:03:28Hah? Apa tuh? Oh, baru.

1:03:30Suaranya enak.

1:03:32Empuk ya. Empuk.

1:03:34Toki. Toki.

1:03:36Keyboard mekanik.

1:03:38Keyboard mekaniknya.

1:03:40Best practice, don't use the username

1:03:44as the salt.

1:03:46Don't use timestamp juga

1:03:48tadi kata Ivan.

1:03:50Timestamp juga jangan ya.

1:03:52Gunakan

1:03:54pseudo-random number

1:03:56generator to generate salt.

1:03:58Setiap password

1:04:00harus punya salt yang

1:04:02unique.

1:04:04Ini gimana cara...

1:04:06cara...

1:04:08Ya, pakai krip aja.

1:04:10Pake krip aja ya.

1:04:12Pake library ya.

1:04:14Apapun misalnya kalau saya

1:04:16bilang tadi, coba misalnya

1:04:18timestamp tetapi di

1:04:20sha, sha, di sha 2

1:04:22misalnya kan jadi random tuh.

1:04:24Dan setiap user jadi random.

1:04:26Harus diambil berapa gitu ya.

1:04:28Iya, terus diambil 6 karakter awal atau

1:04:3010 karakter terakhir, terserahlah.

1:04:32Yang penting kan kita sudah berusaha

1:04:34membuat itu serandom mungkin.

1:04:36Serandom mungkin ya.

1:04:38Nggak diambil dari

1:04:40username, nggak diambil dari

1:04:42username.

1:04:44Terakhirnya iklan si artikel itu.

1:04:46Paling bawah.

1:04:48Seperti biasa.

1:04:50Keyboard-nya Nupai.

1:04:52Nupai.

1:04:54Nupai.

1:04:56Episod kali ini dipersembahkan

1:04:58oleh keyboard

1:05:00Nupai.

1:05:02Terlalu-lalu di-sponsorin.

1:05:04Malah Ivan yang ngayar.

1:05:06Nupai.

1:05:08Ambasador.

1:05:10Nupai.

1:05:12Dari sisi back-end berarti

1:05:14Laravel sudah ada kan ya?

1:05:16Kalau dari PHP sih.

1:05:18Sudah ada library-nya sendiri

1:05:20kalau dari PHP.

1:05:22NoJS juga ada ya.

1:05:24NoJS. Yang dari

1:05:26NextJS itu apa sih?

1:05:28Itu kan bisa dipakai

1:05:30umum juga, NextJS.

1:05:32Yang dari Versal, sorry.

1:05:34Yang dari Versal.

1:05:36AuthJS ya.

1:05:38Namanya ya.

1:05:40Yang tadinya dari NextJS.

1:05:42Terus abis itu dia bikin, ya

1:05:46AuthJS ya betul. AuthJS.

1:05:48Tadinya kan dia khusus spesifik

1:05:50untuk NextJS.

1:05:52Terus abis itu di generalisasi.

1:05:54Dibikin untuk umum.

1:05:56Oh beda sih kalau

1:05:58apa? Maksudnya

1:06:00kalau itu full-hosted

1:06:02layanan ya kayaknya?

1:06:04Free and open source.

1:06:06Oh itu library.

1:06:08Bisa express, bisa next, bisa

1:06:10quick, bisa

1:06:12spell, bisa yang lain-lain.

1:06:14Remix.

1:06:16Solid start.

1:06:18Maksudnya itu

1:06:20apa?

1:06:22Kalau yang tadi yang di

1:06:24Laravel, NoJS itu kan

1:06:26bukan service untuk

1:06:28kalau ini kan sudah account management ya.

1:06:30Oh ini account management.

1:06:32Semacam all out tapi lewat

1:06:34kalau AuthJS ini, semacam all out

1:06:36tapi lewat dia. Maksudnya kriptonya.

1:06:38Kalau yang tadi

1:06:40kan yang di framework itu yang

1:06:42lower level kan. Maksudnya kita yang

1:06:44umum sendiri. Laravel

1:06:46kayaknya udah high level kayak gini

1:06:48kan? Kalau Laravel.

1:06:50Enggak kayaknya.

1:06:52Kecuali. Enggak.

1:06:54Cuma Laravel itu kan banyak library

1:06:56tambahannya. Banyak ecosystem.

1:06:58Jadi kayak Laravel Breeze.

1:07:00Atau semacamnya namanya.

1:07:02Enggak. Mungkin ada juga

1:07:04yang...

1:07:06Ada ya?

1:07:08Karena kalau

1:07:12si Laravel kan pakai PHP ya.

1:07:14Di belakang-belakangnya itu

1:07:16di belakangnya itu

1:07:18pasti pakai

1:07:20PHP pure functionnya itu

1:07:22password hash, password verify,

1:07:24kript.

1:07:28Si PHP nya sendiri

1:07:30sudah sediakan segitu banyak.

1:07:32Ini sih

1:07:34function,

1:07:36pure functionnya dia.

1:07:38Untuk

1:07:40lucia out tuh

1:07:42dari si Aris.

1:07:44Lucia out ini apa?

1:07:46Iya belum pernah.

1:07:48High level nya untuk

1:07:50ya tau sih, coba liat.

1:07:52Ini kan

1:07:54Laravel out ya, coba ya.

1:08:00Jadi di Laravel nya sendiri

1:08:02out nya tuh kayak

1:08:04cuma dikasih kelas-kelas gitu.

1:08:06Ya tetap kita yang handle, kita yang urus,

1:08:08kita yang masukin database nya kita.

1:08:10Cuma ada

1:08:12yang namanya, Laravel kan

1:08:14sistemnya luas ya. Ternyata dia punya

1:08:16Laravel password sama

1:08:18Laravel sanctum. Nah itu tuh.

1:08:20Dia punya

1:08:22service tambahan.

1:08:24Iya. Apa?

1:08:26Iya.

1:08:30Iya.

1:08:32Iya.

1:08:34Kalau di

1:08:36setelah

1:08:38setelah

1:08:40Iya.

1:08:42Jadi

1:08:50ada satu lagi kan

1:08:52di atasnya yang harus kita implementasi.

1:08:54Apa tuh? 2FA

1:08:56Two Factor Authentication

1:08:58Second Factor Authentication

1:09:00atau Multi Factor Authentication.

1:09:02Yang pakai

1:09:04device ya?

1:09:06Ya bisa OTP,

1:09:08bisa device, bisa

1:09:10kalau dari Android kan ada

1:09:16Google Authenticator

1:09:18Google Authenticator.

1:09:20Jadi one time

1:09:22key in gitu.

1:09:24Kalau di token BCA

1:09:26ada application 1, application 2

1:09:28ingat gak jaman dulu

1:09:30di token BCA

1:09:32Nah itu teknologi sama tuh

1:09:34sama OTP.

1:09:36Tapi yang satu hardware, yang satu software ya.

1:09:38Iya masih ada di saya nih.

1:09:40Tapi udah gak pernah gue pake.

1:09:42Masih punya tapi mati.

1:09:44Gak bisa nyala tuh. OTP.

1:09:46Iya OTP tuh.

1:09:48Apply 1, apply 2, apply 3.

1:09:50Yang apply 3 pake salt.

1:09:52Jaman dulu tuh BCA udah pake gitu tuh.

1:09:58Udah duluan ya.

1:10:00Ya kalau banking kan

1:10:02securitasnya di nomor 1 kan.

1:10:04Two Factor Authentication

1:10:08Jadi kalau sekarang kan login itu

1:10:12kalau kita udah bikirin login

1:10:14secara keseluruhannya. Pasok kan

1:10:16sudah harus secure.

1:10:18Terus kemudian unik.

1:10:20Terus kemudian dikirimkan

1:10:22harus secure juga sih.

1:10:24Terus kita pake HTTPS.

1:10:26Terus kemudian

1:10:28passwordnya kita gak boleh

1:10:30simpan plain text

1:10:32dalam database. Kita harus

1:10:34solve dan hash.

1:10:36Terus kemudian di atas layarnya lagi

1:10:38masih ada harus kayak pakai

1:10:402FA untuk menambah lebih

1:10:42secure. Lalu

1:10:44kita juga menyediakan namanya

1:10:46ada SSO Single Sign On.

1:10:48Seperti kita di Authentication Provider

1:10:50pakai Github

1:10:52atau Google

1:10:54atau Windows.

1:10:56Windows ada gak sih? Windows Halo.

1:10:58Terus banyak-banyak.

1:11:02Facebook login

1:11:04segala macam.

1:11:06Yang umum sih ya Facebook, Google.

1:11:08Dan itu sebenarnya

1:11:12sudah banyak label yang

1:11:14umur. Jadi kita bisa tinggal pakai.

1:11:16Nah, yang terakhir

1:11:18itu adalah namanya Passkey.

1:11:20Passkey.

1:11:22Bagaimana perkembangannya.

1:11:24Password menggunakan Authentication.

1:11:26Nah, kita

1:11:28sudah satu

1:11:30saya ada presentasinya

1:11:32karena sudah pernah sering bawa

1:11:34berkuar-kuar soal Passkey.

1:11:36Apakah Passkey bisa

1:11:38memucahkan masalah password leak?

1:11:40Ini overview aja.

1:11:42Overview aja.

1:11:44Apakah Passkey bisa memecahkan

1:11:46masalah password leak?

1:11:48Bisa ya? Bisa.

1:11:50Tidak secara langsung.

1:11:52Justru bisa banget

1:11:54password leak untuk data.

1:11:56Ya, karena dia

1:11:58saya coba share screen aja.

1:12:00Ini teaser dulu ya.

1:12:04Passkey kayaknya episode

1:12:06terpisah kayaknya ya. Loh.

1:12:08Apa? Gimana?

1:12:10Sebentar.

1:12:12Screen saya yang kelihatan?

1:12:16Iya.

1:12:18Jadi

1:12:20Passkey.

1:12:22Kalau teknologinya mirip

1:12:24dia pakai

1:12:26Asymmetric Key.

1:12:32Satu private key,

1:12:34satu public key.

1:12:36Jadi asymmetric cryptography gitu ya.

1:12:38Sama seperti kita generate

1:12:40key kita buat SSH. Ada private key,

1:12:42ada public key.

1:12:44Kalau misalnya kita mau

1:12:46git lah, kalau kita mau pakai git,

1:12:48mau sending data ke

1:12:50GitHub, ya kan?

1:12:52Kita kan petawanya diminta untuk generate

1:12:54key-nya kita dulu kan.

1:12:56Apa sih?

1:12:58Lupa gue, Kas.

1:13:00Untuk bikin key.

1:13:02Ya itu private key, public key.

1:13:08General key.

1:13:10Lupa.

1:13:12DSA, RSA, apa ya?

1:13:14Keygen, keygen.

1:13:16Keygen, keygen. Nah.

1:13:18Eh, keygen. Bukan gak sih?

1:13:20Basa sih.

1:13:22Bukan SSH.

1:13:24SSA.

1:13:26SSH.

1:13:28SSH loginnya.

1:13:30Tapi untuk key...

1:13:32Lupa kan.

1:13:36Tapi itu ya yang terminal.

1:13:38Ya yang terminal untuk generate key. Apa sih?

1:13:40Keygen.

1:13:42Keygen kan, bener kan?

1:13:44Bener kan?

1:13:46Iya bener. Keygen kok.

1:13:48Lupa sih.

1:13:50SSH keygen. Nah.

1:13:54SSH keygen.

1:13:56Iya. SSH keygen. Bener-bener.

1:13:58Udah malam soalnya.

1:14:02Sama nih. Jadi private key

1:14:04dan public key.

1:14:06Nah. Saat kita nge-generate

1:14:08pakai

1:14:10API namanya

1:14:12WebAuthn. Kalau di web itu namanya

1:14:14WebAuthn.

1:14:16Kita bisa generate keynya itu

1:14:18yang akan meng-invoke si

1:14:20operating system

1:14:22untuk nge-generate key ini.

1:14:24Yang dikirimkan ke server

1:14:26hanya public key.

1:14:28Yang disimpan

1:14:30di lokal, di operating system

1:14:32private keynya saja.

1:14:34Sehingga

1:14:36tadi menjawab pertanyaan apakah

1:14:38mencegah password leak? Yes.

1:14:40Karena kalau yang bocor adalah public key

1:14:42sudah.

1:14:44Ambil aja public keynya.

1:14:46Kalau kamu simpan public key

1:14:48saya di server kamu untuk saya bisa login

1:14:50ke server kamu, ya makasih.

1:14:52Saya bisa buka pintunya sana.

1:14:54Jadi sebenarnya

1:14:56kalau public key yang bocor ya udah. Nggak masalah.

1:14:58Nggak ada apa-apa.

1:15:00Lalu kemudian

1:15:02untuk bisa

1:15:04kita

1:15:06proses loginnya

1:15:08itu yang dikirimkan

1:15:10hanya signaturnya saja.

1:15:12Jadi nanti dari si server

1:15:14memberikan

1:15:18kita ke

1:15:20kayak sebuah

1:15:22random number

1:15:24yang akan

1:15:26dibuat

1:15:28ke

1:15:30random number dari server

1:15:32kirimkan ke operating system

1:15:34atau web

1:15:36via web, nanti akan

1:15:38menghasilkan sebuah signature.

1:15:40Nah signature-nya ini hanya bisa

1:15:42divalidate pakai public key

1:15:44yang

1:15:46pernah digenerate oleh si private key.

1:15:48Nggak bisa lagi. Tapi berarti public key

1:15:50sama private key itu lah dia kayak

1:15:52itunya ya?

1:15:54Ada koneksinya lah, ada fungsinya.

1:15:56Bisa dibalikkan. Hasil hasingnya,

1:15:58hasil algoritma untuk

1:16:00waktu nge-generate-nya itu ya

1:16:02mereka punya

1:16:04sebuah pahaman.

1:16:06Kayak there's a way untuk menghubungkan private key ke

1:16:08public key yang digenerate dari situ.

1:16:10Nggak koneksi sebenarnya. Jadi hasil validation-nya

1:16:12bisa

1:16:14match dengan algoritma yang dipakai.

1:16:16Karena algoritma ini sama nanti.

1:16:18Untuk menggenerate signature

1:16:20pakai private key,

1:16:22signature diverify pakai

1:16:24public key.

1:16:26Begitulah

1:16:28prosesnya untuk

1:16:30pas key.

1:16:32Kita butuh satu episode

1:16:34sendiri untuk bahas

1:16:36ini.

1:16:38Demo-nya kira-kira

1:16:40seperti ini.

1:16:42Stop screen

1:16:44dulu.

1:16:46Terus kemudian

1:16:48share yang

1:16:50satu lagi.

1:16:52Jadi saya

1:16:54nggak bisa

1:16:56ini harus entire screen

1:16:58karena ada pop-up.

1:17:00Harus

1:17:02share entire screen dulu.

1:17:04Udah

1:17:06bikin

1:17:08plug-innya ya.

1:17:10Punya plug-in WordPress-nya ya.

1:17:12Ini tadi

1:17:14yang saya bilang, Mas Riza,

1:17:16kalau paso ternyata kelihatan

1:17:18di DevTool. Saya salah.

1:17:22Iya,

1:17:24cuma nggak kelihatan di UI aja.

1:17:26Webplugin.

1:17:30Password.

1:17:32Password.

1:17:34Passkey.

1:17:36Jadi kalau di WordPress

1:17:38sudah ada plug-innya.

1:17:40Register new passkey.

1:17:42Pakai yang

1:17:44yang punya si

1:17:46browser aja.

1:17:48Oke.

1:17:50Generated.

1:17:52Lalu

1:17:54kalau misalnya saya mau login.

1:17:56Login passkey.

1:17:58Continue.

1:18:00Ketik-ketik lagi.

1:18:02Jangan usah ketik lagi.

1:18:04Yay.

1:18:06Apa soundboard dong?

1:18:08Soundboard putri tangan.

1:18:10Pertemuan-pertemuan

1:18:16berikutnya.

1:18:18Tidak kedengeran.

1:18:20Oh, sorry. Saya ke-mute tadi.

1:18:22Dah.

1:18:24Oke.

1:18:26Oke. Cukup.

1:18:28Kayaknya untuk malam ini.

1:18:30Apakah perlu kita bahas topik buat

1:18:32minggu depan?

1:18:34Beli topik ya.

1:18:36Pilih topik.

1:18:38Sebentar.

1:18:40Share screen dulu.

1:18:42Ada yang suka tarik buat bahas

1:18:44passkey?

1:18:46Tertarik dong.

1:18:48Pasky kita langsung masukin.

1:18:50Pasky.

1:18:52WebAuthn dan Pasky.

1:18:54Liputnya tepatnya itu sih.

1:18:56Jadi kita bahas kulik WebAuthn-nya.

1:18:58Pakai H nggak?

1:19:00Iya.

1:19:02Gini?

1:19:04Plus Pasky.

1:19:06G-R-C.

1:19:08G-R-C apa sih?

1:19:10G-R-C apaan?

1:19:12Itu

1:19:14G-R-C.

1:19:16Bukan itu. G-R-PC.

1:19:18Maksudnya.

1:19:20G-R-PC.

1:19:22G-R-C apaan? G-R-C.

1:19:24Sorry. Ini kayaknya salah ini ya?

1:19:26Oh, harus ada

1:19:28body-nya.

1:19:30Nah.

1:19:32Oh, governor risk and

1:19:34compliance.

1:19:36Silahkan, teman-teman.

1:19:38Kalau ada yang mau

1:19:40ikutan diskusi atau mau

1:19:42sumbang ide

1:19:44atau mau, apa namanya?

1:19:46Ada yang mau

1:19:48voting-voting.

1:19:50Nah, buat minggu depan, kira-kira kita

1:19:52mau bahas apa?

1:19:54Di sini ada database,

1:19:56dokumentasi, jajar petor.

1:19:58Web Security kan udah ya?

1:20:00Web Security udah, tapi kan baru basic kan.

1:20:02Masih ada part ke berikutnya.

1:20:04Kita udah bahas, sebenernya,

1:20:06today kan basic web security juga

1:20:08soal password.

1:20:10Kita belum bahas scale.

1:20:12Developer well-being.

1:20:14Itu bagus tuh.

1:20:16Ya, dibuat aja dulu thread-nya.

1:20:18Besok-besok bisa default.

1:20:20Ya, kita buatin deh.

1:20:22Kita buatin. Ini ya.

1:20:24Developer finance.

1:20:26Get started ideas.

1:20:28Developer life management.

1:20:32Gak.

1:20:34Well-being. Apa namanya istilahnya?

1:20:36Work and life balance.

1:20:38Work-life balance ya.

1:20:40Life.

1:20:42Bisa juga work hard, play hard.

1:20:44Ya, work-life balance, kesehatan.

1:20:48Tulis dong saran dari 333.

1:20:50Oh iya bener.

1:20:52Saran dari

1:20:54tiganya tiga kali.

1:20:56Saran dari

1:20:583 x 3.

1:21:00Eh, 3.

1:21:023.

1:21:04Okay.

1:21:06Eh, JSP sih.

1:21:08Governance, risk and compliance.

1:21:10Itu gimana?

1:21:12Itu bahasan tang apa ya?

1:21:14Tulis aja dulu.

1:21:16Kayak GDPR gitu gak sih?

1:21:18Ya, nanti dibahas di diskusinya aja.

1:21:20Ya, silahkan

1:21:22yang mau apa namanya?

1:21:24Dibantu ini.

1:21:26Seeding dulu. Seeding.

1:21:28Seeding.

1:21:30Kalau ada sal, ada seeding juga kan.

1:21:34Di mana?

1:21:36Di seeding dulu, di seeding.

1:21:38Seeding itu maksudnya

1:21:42Seed itu maksudnya

1:21:44dasar awalnya

1:21:46dulu apa.

1:21:48Yang bisa kita kembangkan dari situ.

1:21:50Kita bantu tulis.

1:21:52Temen-temen bisa ngelengkapin

1:21:54kayak Mas Irfan yang bikin nih.

1:21:56Tuh, lengkap.

1:21:58Enak kan? Bisa dielaborasi

1:22:00lebih lanjut gitu. Ide-ide

1:22:02yang di sini. Terus kalau misalkan

1:22:04ide-ide nya udah ada ya tinggal

1:22:06voting aja.

1:22:08Jadi kita bisa milihnya lebih gampang.

1:22:10Protokol transfer data.

1:22:12Sudah ya?

1:22:14Udah ya? Ini udah ya? Kita close.

1:22:18Ya, close aja.

1:22:20Bantu vote dong, bantu vote.

1:22:24Bantu vote.

1:22:26Kira-kira apa?

1:22:28Ini ada growing algorithm.

1:22:30Belum baca kita.

1:22:32Hah, oh ya?

1:22:34Belum baca.

1:22:36Cuma belum selesai.

1:22:38Ya, jadi

1:22:40buat minggu depan kira-kira kita mau

1:22:42bahas apa nih?

1:22:44Paski database scaling

1:22:46database scaling yang

1:22:48ngerti siapa nih?

1:22:50Nggak ngerti.

1:22:52Database scaling.

1:22:54Tauannya cuma bikin

1:22:56database nya banyak.

1:22:58RDS, bikin RDS.

1:23:00Vertical scaling.

1:23:02Design pattern.

1:23:04Design pattern kita udah pernah belum ya?

1:23:06Belum kayaknya ya.

1:23:08Belum. Belum ya design pattern ya?

1:23:10Design pattern.

1:23:12Dokumentasi.

1:23:14Dokumentasi menarik deh.

1:23:16Bikin, maksudnya web

1:23:18web untuk dokumentasi kan?

1:23:20Dokusaurus. Iya, dokusaurus.

1:23:22Iya, dokusaurus. Terus apa tuh? Starlight.

1:23:24Bukannya pernah ya?

1:23:26Yang itu.

1:23:28Atau tentang gimana kita nggak dokumentasi?

1:23:30Oh.

1:23:32Oh, berarti itu bisa diberi dua tuh.

1:23:34Bisa juga, bisa juga.

1:23:36Bisa.

1:23:38Ya, bisa sih kalau mau.

1:23:40Oke. Apa kita perlu?

1:23:42Satu tentang bikin web

1:23:44website dokumentasi.

1:23:46Yang satu lagi ya tentang

1:23:48pendokumentasikan.

1:23:50Tentang dokumentasinya itu sendiri ya.

1:23:52Kan, bisa, apa?

1:23:54Belum tentu kita selalu bikin library

1:23:56atau framework kan. Bisa juga

1:23:58ya, apa? Buat web app

1:24:00atau website. Itu kita

1:24:02nyatur itu. Ngedokumentasikan

1:24:04gimana, apakah dengan JSdoc

1:24:06doang misalnya.

1:24:08Oke. Jadi, buat minggu depan

1:24:10kira-kira apa nih?

1:24:12Bahas tentang

1:24:14apa itu dokumentasi? Atau tipe-tipe

1:24:16dokumentasi yang tadi? Cara mendokumentasikan

1:24:18project atau

1:24:20kode kita?

1:24:22Apa ya?

1:24:24Dokumentasi. Atau

1:24:26ya itu tadi, itu dulu

1:24:28framework buat bikin docs.

1:24:30Oke.

1:24:32Framework

1:24:34untuk

1:24:36membuat dokumentasi

1:24:38docs.

1:24:40Terus yang kedua?

1:24:42Buat yang kedua apa?

1:24:44Design pattern ya?

1:24:46Ya.

1:24:48Yang ketiga

1:24:50paski aja.

1:24:52Yang ketiga paski.

1:24:54Oke. Silakan

1:24:56dalam lima menit, teman-teman

1:24:58voting di YouTube.

1:25:00Nah, ini

1:25:02pernyataan yang

1:25:04menariknya.

1:25:06Kuliah master di IT part

1:25:08belajarnya di sini lebih nyampun.

1:25:10Terima kasih lho.

1:25:12Terima kasih lho. Ini pujian lho buat kita lho.

1:25:14Dosennya

1:25:16taunya nonton besok pagi.

1:25:18Apa kamu bilang?

1:25:20Kuliah master.

1:25:22Cuma kalau master mungkin level

1:25:24abstraksinya lain kali ya?

1:25:26Ya, udah ini.

1:25:28Semacamnya.

1:25:30Udah high level.

1:25:32Kita kan

1:25:34jatuhnya low level ya.

1:25:36Kita praktikal.

1:25:38Kita yang

1:25:40kita praktisi.

1:25:42Tapi kalau master itu kan

1:25:44ya mungkin lebih teoritis

1:25:46kali ya?

1:25:48Yes.

1:25:50Tentang sistem IT yang

1:25:52lebih kuat.

1:25:54Ya, manajemennya,

1:25:56terus yang tadi apa, governance

1:25:58dan lain-lain kayaknya lebih bahas disana.

1:26:00Oke.

1:26:06Baru tiga orang yang

1:26:08vote. Ayo satu menit lagi

1:26:10ditunggu. Tiga orang votnya

1:26:12lain-lain semua pusing. Kalo tiga orang

1:26:14vot satu yang sama

1:26:16mah, gak apa-apa.

1:26:18Design pattern.

1:26:20Tiga orang.

1:26:22Tiga orang.

1:26:24Ayo, ayo.

1:26:26Sebelum jam setengah

1:26:28sebelas kita harus sudahan.

1:26:30Wah, bener nih.

1:26:32Lima vote.

1:26:34Lain semua, gak mungkin.

1:26:36Satu menit lagi, satu menit lagi.

1:26:38Enak nih ngeliatin live vote ya.

1:26:42Cuman gak kelihatan di sini ya.

1:26:44Kayak pemilu dong.

1:26:46Quick count.

1:26:48Quick count.

1:26:50Lima. Dua.

1:26:54Tiga. Eh, belum ya?

1:26:56Udah. Dua.

1:26:58Satu. Iya, pemenangnya

1:27:00adalah design pattern.

1:27:02Hooray.

1:27:04Minggu depan kita akan bahas tentang design pattern.

1:27:06Wah, terus gak ada yang bisa design pattern.

1:27:08Gak ada yang bisa.

1:27:10Terima kasih.

1:27:12Design pattern.

1:27:16Sudah pernah belajar

1:27:18sebuah lagi nih buku-buku

1:27:20Sambil belajar, cari ini ya.

1:27:22Ya, gitulah.

1:27:24Terima kasih ya PRnya, teman-teman.

1:27:26Kan ini cuma design pattern.

1:27:28Gak ada

1:27:30komputer programming

1:27:32blablabla design pattern.

1:27:34Nanti gue bakal bahasnya javascript design pattern.

1:27:36Iya dong.

1:27:38Apa, web app design pattern?

1:27:40Kan design pattern juga.

1:27:42Iya, design patternnya banyak kan?

1:27:44Di sini dibahas gak?

1:27:46Design pattern apa? Gak ada kayaknya.

1:27:48Lakan gak ada ketentuannya kan?

1:27:50Makanya bikin spesifikasi

1:27:52kalau gak spesifikasi. Ini aja detail nih.

1:27:54Oh, ada? Oh, ada.

1:27:56Apakah dari base project yang mau

1:27:58dibangun?

1:28:00Atau design...

1:28:02Misalnya pertimbangan mau bikin system

1:28:06payment gateway. Apakah cocok

1:28:08kalau kita pakai design pattern berbasis

1:28:10service. Kebanyakan

1:28:12tech company besar itu pakai design

1:28:14pattern seperti apa?

1:28:16Tips junior programmer yang mau

1:28:18memahami design pattern

1:28:20seperti apa di luar komunitas

1:28:22oh, komunikasi ke senior

1:28:24dan baca dokumentasi projectnya.

1:28:26Oke, oke, oke.

1:28:28Tuh, bahas design pattern bisa buat episode-episode

1:28:32memang.

1:28:34Cuma ngerti MVC.

1:28:36Sama yang patterns.devnya

1:28:38Adi Osmani.

1:28:40Itu udah kita bahas kan?

1:28:42Itu udah kita bahas. Oh, enggak kan?

1:28:44Kan belum in detail.

1:28:46Nah, cuma kalau itu sih

1:28:48front-end sama

1:28:50ya, gak semua UI ya.

1:28:52JavaScript atau front-end banget sih.

1:28:54Cuma ngertinya.

1:28:56Kita mulai dari pertanyaan ini aja

1:28:58kayaknya lumayan starting pointnya.

1:29:00Biar bahas bisa

1:29:02sama ya, baca-baca dulu aja.

1:29:04Ini sih patterns.dev ini

1:29:06fallback-nya aja kalau udah bingung.

1:29:08Yes.

1:29:10Siap, siap, siap.

1:29:12Baiklah, teman-teman.

1:29:14Untuk malam ini kita...

1:29:16Sudah mulai mikir cari buku apa yang harus gue baca

1:29:182 hari ini.

1:29:20Bukannya kita ngobrolin web ini harusnya

1:29:22low effort ya?

1:29:24Low effort.

1:29:26Tadi kita yang milih

1:29:28design pattern juga sih.

1:29:30Terima kasih.

1:29:32Terima kasih.

1:29:34Belajar bareng lah.

1:29:36Tenang, tenang, tenang.

1:29:38Yes.

1:29:40Oke, untuk malam ini sekian dulu.

1:29:42Terima kasih banyak buat semuanya yang sudah hadir

1:29:44dan meramaikan. Kita ketemu lagi

1:29:46minggu depan di jam 9 malam

1:29:48WIB ya.

1:29:50Sampai jumpa.

1:29:52Selamat malam, selamat istirahat.

1:29:54Bye-bye.

1:30:00[Sampai jumpa di video selanjutnya]

Suka episode ini?

Langganan untuk update episode terbaru setiap Selasa malam!

Langganan Sekarang

Episode Terkait

File Upload Strategy - Ngobrolin WEB
EP 146

13 Okt 2025

File Upload Strategy - Ngobrolin WEB

🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Malam ini akan mendiskusikan topik yang dikirimkan oleh penonton setia kita ...

Ngobrolin TanStack - Ngobrolin WEB
EP 127

6 Mei 2025

Ngobrolin TanStack - Ngobrolin WEB

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. ...

Desain Aplikasi CLI - Ngobrolin WEB
EP 147

13 Okt 2025

Desain Aplikasi CLI - Ngobrolin WEB

🗣️🕸️ Selasa malam waktunya #ngobrolinWEB! Topiknya agak beda nih, kita akan diskusi tentang mendesain dan mengembangka...

Komentar