Supaya aman, login di aplikasi saya saat ini tidak menyimpan parameter yang diteruskan ke metode login atau reset kata sandi. Panggilan log memiliki parameter opsional yang mengontrol ini, yang, ketika diatur ke true, menggantikan objek parameter yang disimpan dengan [Redacted]
. Tentu, jadi saya kehilangan sedikit data, tetapi saya memiliki alamat IP mereka, dan saya lebih suka tidak mengambil risiko mendapatkan sesuatu yang sensitif dalam plaintext.
Jika Anda benar-benar ingin mencatat hal semacam ini, saya sarankan saat membuat log masuk upaya, Anda memeriksa database untuk pengguna dengan nama yang cocok dengan yang Anda miliki di bidang nama pengguna, dan hanya menyimpannya jika Anda memiliki kecocokan. Jika tidak, Anda hanya menyimpannya sebagai "pengguna tak dikenal". Anda bisa menjadi mewah, memeriksa apakah nilai ini mengandung itu atau apa pun, tetapi selalu ada risiko bahwa Anda mendapatkan kombinasi seperti [Pengguna] [Kata Sandi] dan [UserPas] [pedang], dalam hal ini Anda dapat memeriksa IP dan menyimpulkan bahwa Anda secara tidak sengaja menyimpan kata sandi seseorang di awal. Anda dapat memperluas ini ke [Pengguna] [Kata Sandi] dan [Kata Kunci Pengguna] yang tidak mungkin tetapi mungkin, dalam hal ini Anda dapat melihat "login yang tidak berhasil oleh UserPassword" diikuti oleh "Login berhasil oleh Pengguna" dan menyimpulkan semuakata sandi pengguna. Secara umum, untuk amannya saya katakan untuk tidak mencatat nama pengguna kecuali jika login berhasil.
Edit untuk ditambahkan:
Sebagian besar argumen yang diposkan orang untuk mencatat nama pengguna karena upaya login yang gagal, menurut pendapat saya, lebih baik ditangani melalui metode lain.
Sebagai contoh, dikatakan bahwa ketika seorang pelanggan bertanya "mengapa saya tidak bisa masuk?", Nama pengguna yang masuk akan memungkinkan Anda untuk menunjukkan kesalahan ketik. Ini benar, tetapi tidak sepadan dengan risiko juga mendapatkan kata sandi; Saya akan melakukan ini dengan mengarahkan kembali pengguna ke formulir login jika gagal, menyorot bidang nama pengguna dan mengisinya kembali dengan apa pun yang mereka ketikkan sehingga mereka dapat melihat sendiri.
Argumen lain adalah itu memungkinkan Anda mengidentifikasi upaya peretasan; serangkaian kegagalan terhadap satu nama pengguna mungkin merupakan upaya untuk memaksa kata sandi. Saya akan melakukan ini dengan memiliki kolom "BadLogins" pada tabel Users, yang bertambah setiap kali login gagal dengan nama pengguna yang cocok dengan pengguna ini, dan disetel ulang ke nol pada login yang berhasil, setelah memberi tahu pengguna "telah ada x upaya login yang gagal sejak login terakhir Anda "dan memberi tahu mereka tentang apa yang harus dilakukan jika mereka tidak menganggap upaya itu dari mereka. Jika Anda ingin benar-benar teliti, Anda bisa memiliki kolom lain yang menyimpan nilai terakhir dari kolom BadLogins bahkan setelah login berhasil, dan / atau kolom yang menyimpan nilai tertinggi kolom ini, dan / atau kolom yang menyimpan jumlah total login gagal yang pernah dimiliki akun ini.