Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development

Menangani Kredensial Login Pengguna dengan Aman

by
Read Time:12 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Andy Nur (you can also view the original English article)

Untuk sebagian besar situs web, kamu memiliki area yang berbeda di dalamnya (halaman rumah, profil pengguna, halaman admin, dll.), Beberapa di antaranya akan bersifat publik dan yang lain perlu dibatasi hanya untuk pengguna tertentu. Kamu sering ingin mengidentifikasi pengguna secara unik sehingga kamu dapat memberikan konten yang disesuaikan atau untuk mengambil informasi spesifik dari pengguna. Banyak situs juga perlu melindungi bagian dari situs, seperti area administratif untuk memelihara dan memperbarui konten situs. Di situs CMS, beberapa pengguna mungkin dapat membuat konten, tetapi yang lain harus menyetujui konten itu sebelum diperlihatkan kepada publik.

Mengamankan Username dan Password

Apa pun kebutuhan, pembatasan atau penyesuaian memerlukan pengidentifikasian setiap pengguna yang mengakses situsmu. Untuk situs yang menghadap Internet yang dimaksudkan untuk pengguna umum, username dan password masih berlaku karena tidak ada opsi yang lebih baik. Ada opsi lain jika kamu bekerja di environment khusus, seperti Intranet perusahaan, tempat kamu memiliki kontrol atas pengunjung situs.

Sementara pada kebutuhan umum, login dan password sering ditangani dengan cara meninggalkan situs web dan penggunanya, yang tidak lebih rentan terhadap serangan keamanan. Dengan mengikuti beberapa praktik terbaik, kamu dapat melindungi situs dan kontennya dari peretas dengan lebih baik. Konsekuensi dari perlindungan yang buruk dapat menjadi serius. Bayangkan sebuah situs di mana setiap pengguna dapat memposting konten yang tampaknya berasal dari perusahaan karena manajemen password yang buruk atau toko online di mana setiap pengguna dapat melihat semua pesanan yang ditempatkan di situs.

Mari kita lihat beberapa pertimbangan keamanan saat bekerja dengan login dan password di situs webmu.

Username: Email atau Umum

Info login terdiri dari username yang mengidentifikasimu, dan password yang memvalidasimu adalah pengguna yang kamu klaim. Situs web sering memungkinkan pengguna menentukan username khusus atau menggunakan alamat email pengguna sebagai nama username-nya.

Keuntungan

Email tidak sering berubah dan sebagian besar situs web sudah mengumpulkan informasi ini, sehingga pengguna juga cenderung lebih sedikit melupakan email mereka daripada username yang mereka buat. Email juga akan secara otomatis unik karena pengguna jarang berbagi akun email dan mereka yang melakukannya, kemungkinan tidak ingin memisahkan akun.

Kerugian

Kelemahan pada email termasuk bahwa dua orang yang berbagi email, tidak dapat memiliki akun terpisah. Selain itu, jika situsmu memiliki alasan yang sah untuk satu orang memiliki beberapa akun, ini mungkin tidak dapat dilakukan dengan email, tetapi lebih mudah diterapkan menggunakan username. Kemungkinan juga email lebih mudah diretas karena pengguna kemungkinan menggunakan email yang sama di setiap situs, tetapi mayoritas username kemungkinan tidak akan jauh lebih sulit untuk diretas, karena pengguna cenderung menggunakan kembali username sebanyak mereka menggunakan kembali password.

Kecuali kamu memiliki alasan khusus untuk menghindari alamat email, lebih suka email untuk username login. Penggunaan email juga menjadi norma di situs web. Jangan lupa, untuk memberikan login berbasis email dengan cara mengubah email. Tanpa fitur ini, pengguna perlu membuat akun baru dan kehilangan semua riwayat masa lalu hanya karena mereka mengubah penyedia internet atau kehilangan akun sebelumnya karena kelulusan atau mengubah pekerjaan, menyebabkan email lama mereka hilang.

Selalu berhati-hati saat menggunakan email sebagai login untuk tidak menunjukkannya kepada publik, karena alasan privasi dan masalah pencegahan spam.

Login Dapat Memberikan Terlalu Banyak Info

Halaman login situs webmu akan menjadi titik pertama penelitian untuk seorang hacker. Peretas akan berusaha menentukan akun yang valid yang ada di situs web. Menangani halaman login dengan benar akan membuat pekerjaan peretas lebih sulit. Untuk memulai, kamu harus meminimalkan jumlah data yang gagal disediakan oleh penyerang. Ide awalmu ketika seseorang memasukkan username yang tidak dikenal mungkin untuk memberikan pesan yang membantu bahwa mereka harus memeriksa username mereka. Kamu dapat memberikan halaman yang lebih aman dengan menampilkan pesan kesalahan yang sama ketika username tidak ditemukan dan ketika password tidak cocok dengan password yang pengguna diberikan. Pesan harus menunjukkan bahwa kombinasi username dan password tidak benar, untuk memberi tahu pengguna untuk memverifikasi kedua informasi, bukan hanya satu atau yang lain.

Jika situmu menggunakan email untuk username login, penyerang dapat dengan mudah memvalidasi jika pengguna memiliki akun di layananmu jika kamu mengembalikan pesan yang berbeda untuk login yang tidak dikenal dibandingkan dengan kombinasi username dan password yang gagal. Itu memang membuat hal-hal sedikit kurang nyaman bagi pengguna, tetapi keamanan tambahan biasanya merupakan faktor keseimbangan yang lebih baik.

Seperti yang disebutkan, menghilangkan pesan khusus untuk username yang tidak valid, memperdagangkan keamanan yang ditingkatkan untuk pengalaman pengguna yang lebih buruk. Memberikan pesan bahwa login tidak ada akan membantu pengguna melihat kesalahan pengetikan seperti mengetik john dan bukannya jon dengan lebih mudah. Pesan itu juga membantu pengguna yang tidak mengingat username yang mereka gunakan di situsmu. Perlu diingat bahwa jenis pesan ini memberi peretas cara sederhana dan mudah untuk memverifikasi jika ada pengguna di situsmu.

Kamu juga dapat membantu menggagalkan peretas dengan menangani lebih baik berbagai upaya masuk. Sengaja salah mengetik username atau password lebih dari satu kali terjadi cukup umum dari karakter yang salah ketik, mentransposisi dua karakter, atau menggunakan password untuk situs lain daripada password yang benar. Mengizinkan upaya masuk tanpa batas membuka pintu ke brute force attack dengan mencoba username dan password berulang kali untuk menentukan login yang benar. Tool dan skrip otomatis mempercepat proses yang memungkinkan seorang hacker untuk secara sistematis bekerja melalui banyak password potensial, sampai menemukan login yang benar.

Memperkenalkan waktu tunda yang meningkat setelah setiap upaya login yang gagal juga membantu mencegah peretas. Upaya login pertama kali terjadi secara normal. Login kedua tertunda sepersekian detik sebelum mengembalikan hasilnya. Upaya lebih lanjut ditunda semakin lama sebelum mengembalikan respons. Penundaan ini memungkinkan gangguan minimal bagi pengguna yang sah yang melakukan kesalahan, tetapi memperlambat peretas yang mencoba melakukan brute force pada situs.

Untuk data yang lebih sensitif, pendekatan yang lebih kuat dapat dilakukan dengan mengunci akun setelah sejumlah upaya gagal. Mengunci akun dengan menonaktifkannya baik sementara atau permanen. Penguncian menghentikan serangan brute force karena setelah suatu titik, login tidak akan berfungsi. Penonaktifan sementara harus memengaruhi pengguna minimal selama pesan untuk alasan penguncian ditampilkan. Kunci permanen mengharuskan pengguna untuk menghubungi dukungan untuk memperbaiki masalah dan login dengan lebih cocok, melindungi data penting.

Mengamankan Password

Password adalah aspek paling sensitif dari proses login. Jangan pernah menyimpan password dalam teks biasa. Jangan pernah sama sekali. Melakukannya berarti hampir semua masalah keamanan dapat memaparkan informasi login. Bahkan password yang terenkripsi harus dihindari seolah-olah peretas memperoleh akses ke data yang dienkripsi proses dekripsi bisa jauh lebih mudah. Penyimpanan apa pun di mana kamu dapat mengambil password, memudahkan peretas melakukan hal yang sama.

Menerapkan Salt dan Hash

Password harus disimpan dengan salt dan hash. Salt adalah nilai unik yang dihasilkan secara acak dan disimpan untuk setiap login dan ditambahkan sebelum hashing. Menambahkan salt mencegah password identik memiliki hash yang sama dan mencegah seorang hacker membuat daftar hasil hash dari kemungkinan kombinasi password terlebih dahulu. Dengan menambahkan hash acak, password abc123 (jangan pernah gunakan hal seperti itu sebagai password yang sebenarnya) akan menghasilkan hash yang berbeda untuk setiap pengguna.

Fungsi hash mengubah password menjadi nilai panjang yang tetap. Ada fungsi yang dirancang khusus untuk password seperti PBKDF2 atau Bcrypt. Prosesor GPU dalam kartu grafis modern dapat melakukan perhitungan yang diperlukan untuk hash dan dapat menghancurkan banyak algoritma yang lemah dengan cepat. Mesin khusus untuk tujuan memecahkan password dapat menentukan password dengan delapan karakter atau kurang, dalam waktu kurang dari enam jam.

Pengguna sering cenderung menggunakan kembali password yang sama untuk sebagian besar situs tempat mereka memiliki akun. Banyak situs telah mulai menguji kredensial yang terbuka dari peretasan login akun utama terhadap login mereka sendiri dan menghubungi pengguna yang memiliki kombinasi username dan password yang cocok. Evernote dan Facebook baru-baru ini memeriksa kredensial login yang dirilis dari Adobe dan memperingatkan pengguna menggunakan kredensial yang sama.

Cara termudah untuk menangani password dengan benar adalah dengan menggunakan tool yang termasuk dalam kerangka webmu. Keamanan password itu rumit dan membuat satu hal saja yang salah dapat membuat password penggunamu terbuka untuk diserang. pH pass menyediakan library domain publik untuk PHP menggunakan Bcrypt. Penyedia keanggotaan .NET yang lebih tua menggunakan hash yang lebih lemah, tetapi Penyedia Universal yang baru menggunakan PBKDF2. Rails juga menyediakan gem Bcrypt.

Mengatur Ulang Password

Ketika kamu benar-benar mengamankan password sehingga tidak dapat diambil, Kamu kehilangan kemampuan untuk memberikan pengguna password yang terlupakan. Kemudian, kamu perlu memberikan cara alternatif bagi pengguna yang secara sah lupa password untuk mengatur ulang password dengan cara yang aman.

Halaman Reset Password

Halaman pengaturan ulang password yang baik memungkinkan pengguna untuk mengubah password tanpa mengetahui password saat ini. Metode tradisional memungkinkan pengguna untuk memasukkan alamat email mereka dan kemudian mengirim tautan ke halaman web yang memungkinkan mereka untuk mereset password. Mengirim tautan lebih aman daripada mengirim password karena password baru tidak dibuat sampai pengguna mengakses halaman. Mengirim password baru melalui email akan menciptakan kredensial baru yang dapat digunakan siapa pun yang menyadap email tanpa sepengetahuan pengguna. Jika seseorang mencegat email dan mengatur ulang password, pengguna akan tahu kapan mereka mengakses dan mencoba mengatur ulang password-nya.

Halaman reset yang baik juga tidak boleh memberikan validasi bahwa akun itu ada. Logikanya sama dengan yang kita diskusikan sehubungan dengan tidak memberikan umpan balik jika akun tidak ada saat masuk. Bahkan jika login tidak ada di sistem. Pendekatan terbaik adalah memberikan pesan bahwa instruksi telah dikirim ke alamat email pada file. Kamu masih harus mengirim email ke email yang dimasukkan karena ini bisa menjadi kasus yang sah karena lupa email mana yang digunakan untuk akun, seperti memasukkan email kantor dan bukan email pribadi.

Tautan Reset Password

Tautan untuk mengatur ulang password harus dirancang sehingga permintaan reset memiliki masa hidup yang terbatas dan hanya dapat digunakan satu kali. Buat token unik untuk setiap permintaan reset, dikaitkan ke akun yang diminta dan simpan dalam database. Token ini menjadi bagian dari URL yang dikirim melalui email untuk mengatur ulang password. Token juga harus diberikan waktu kedaluwarsa dan dihapus setelah reset selesai. Jika seseorang mencoba menggunakan token yang sudah digunakan atau kedaluwarsa, permintaan akan gagal. Waktu kedaluwarsa harus cukup lama untuk memungkinkan email diterima dan pengguna menyelesaikan tindakan, tetapi tidak terlalu lama untuk memungkinkan penggunaan terlalu jauh di masa mendatang. Kerangka waktu beberapa jam biasanya sudah cukup.

Mengatur Ulang Password Melalui Email

Mengatur ulang password menggunakan email juga membuat keamanan situsmu tergantung pada integritas email pengguna. Jika email dapat diakses, maka orang itu dapat mengatur ulang password. Situs dapat menambahkan pertanyaan keamanan yang harus dijawab sebelum mengatur ulang password. Pertanyaan keamanan memberikan sedikit keamanan ekstra jika jawabannya mudah ditemukan. Pertanyaan keamanan "Apa kota asal saya?" memberikan sedikit keamanan jika jawabannya dapat ditemukan di profil Facebook orang tersebut. Untuk lebih lanjut tentang mengembangkan pertanyaan bagus, lihat http://goodsecurityquestions.com/.

Otentikasi Dua Langkah

Login dan password hanya memerlukan sepasang informasi untuk mengakses situs web. Ketika informasi itu diberikan, maka pengguna dianggap orang yang tepat. Agar pencurian kredensial kurang efektif, kamu dapat menambahkan langkah kedua ke proses otentikasi. Selain sesuatu yang diketahui pengguna (useranme dan password), pengguna juga harus menggunakan sesuatu yang mereka miliki saat ini, umumnya ponsel melalui SMS atau aplikasi untuk tujuan ini.

Bank mungkin yang pertama menerapkan proses ini menggunakan perangkat keras khusus untuk menghasilkan kode yang tergantung waktu. Google mempopulerkan penggunaan pesan teks SMS atau aplikasi sebagai langkah kedua. Banyak situs sekarang menggunakan login yang kompatibel dengan implementasi RFC 6238 Google. Kamu dapat menemukan library yang sudah menerapkan teknik ini untuk framework yang paling populer seperti ASP.NET, ASP.NET #2, Ruby on Rails, PHP, dan Django.

Otentikasi Eksternal

Untuk menghindari masalah ini, kamu memiliki pilihan lain, biarkan orang lain menangani semua ini dengan mengintegrasikan dengan pihak ketiga untuk otentikasi seperti Twitter, Facebook atau OpenID. Melakukannya menawarkan keuntungan dan kerugian. Hal itu menghilangkan sebagian besar masalah keamanan yang telah kita diskusikan di sini sebagai pihak lain yang menangani masalah-masalah itu. Namun, situs-situs lain ini mungkin juga merupakan target peretas yang lebih besar daripada kamu. Jika kamu menggunakan situs lain untuk menangani otentikasi, maka jika login itu disusupi, peretas memiliki akses ke situsmu.

Menggunakan pihak ketiga yang dikenal dapat membantu dan merugikan dari reputasi dan sudut pandang sosial. Keuntungan mengizinkan masuk dengan Facebook atau Twitter adalah bahwa begitu banyak pengguna sudah memiliki akun di sana sehingga mereka akan senang menggunakannya. Pengunjung lain dapat melihat integrasi dengan situs-situs ini sebagai fitur negatif dan tidak menggunakan situsmu karenanya atau jika itu adalah satu-satunya pilihan yang diberikan kepada mereka.

Kesimpulan

Login aplikasi webmu memainkan peran penting dalam mengamankan situsmu. Berhati-hati untuk melindungi login yang akan banyak melindungi situsmu, pengguna situsmu dan informasi pribadi mereka. Untuk bekerja secara aman dengan login, minimalkan jumlah data yang masuk dan halaman pengaturan ulang password-mu berpotensi menyediakan celah bagi peretas. Selain itu, lakukan tindakan pengamanan untuk membuatnya lebih sulit untuk menebak password penggunamu melalui brute force.

Melindungi password adalah masalah penting dari situs mana pun. Password yang dilindungi dengan buruk membuat pekerjaan peretas lebih mudah dan dapat diakhiri dengan kredensial masuk situsmu yang terekspos ke publik. Menggunakan password hash dan salt membuat pekerjaan peretas jauh lebih sulit. Selain itu, menambahkan opsi langkah kedua ke proses login dapat memberikan lebih banyak perlindungan bagi pengguna situsmu. Kamu juga dapat memilih untuk menggunakan pihak ketiga untuk menangani login ke situsmu.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.