Saya melihat ada beberapa . Mana yang dipelihara dan mudah digunakan? Apa pro dan kontra mereka?
Saya melihat ada beberapa . Mana yang dipelihara dan mudah digunakan? Apa pro dan kontra mereka?
Jawaban:
Ternyata, pengembang Rusia Ilya Konyukhov mengambil tantangan setelah membaca ini dan membuat perpustakaan auth baru untuk CI berdasarkan DX Auth, mengikuti rekomendasi dan persyaratan di bawah ini.
Dan Auth Tank yang dihasilkan tampak seperti jawaban untuk pertanyaan OP. Saya akan pergi mengambil risiko di sini dan memanggil Tank Auth perpustakaan otentikasi terbaik untuk CodeIgniter tersedia hari ini. Ini adalah pustaka rock-solid yang memiliki semua fitur yang Anda butuhkan dan tidak ada mengasapi yang tidak Anda miliki:
Pro
- Berfitur lengkap
- Jejak kaki ramping (20 file) mempertimbangkan set fitur
- Dokumentasi yang sangat bagus
- Desain database sederhana dan elegan (hanya 4 tabel DB)
- Sebagian besar fitur bersifat opsional dan mudah dikonfigurasi
- Dukungan file bahasa
- reCAPTCHA didukung
- Menghubungkan ke sistem validasi CI
- Email aktivasi
- Login dengan email, nama pengguna atau keduanya (dapat dikonfigurasi)
- Akun yang tidak diaktifkan akan kedaluwarsa secara otomatis
- Penanganan kesalahan yang sederhana namun efektif
- Menggunakan phpass untuk hashing (dan juga hashes kode autologin dalam DB)
- Tidak menggunakan pertanyaan keamanan
- Pemisahan data pengguna dan profil sangat bagus
- Model keamanan yang sangat masuk akal di sekitar upaya login yang gagal (perlindungan yang baik terhadap serangan bot dan DoS)
(Kecil) Kontra
- Kode kata sandi yang hilang tidak terpotong dalam DB
- Termasuk CAPTCHA asli (buruk), yang bagus untuk mereka yang tidak ingin bergantung pada layanan reCAPTCHA (milik Google), tetapi sebenarnya tidak cukup aman
- Dokumentasi online yang sangat jarang (masalah kecil di sini, karena kodenya didokumentasikan dengan baik dan intuitif)
Jawaban asli:
Saya juga menerapkannya sendiri (saat ini sekitar 80% dilakukan setelah beberapa minggu bekerja). Saya mencoba semua yang lain terlebih dahulu; FreakAuth Light, Auth DX, Redux, SimpleLogin, SimpleLoginSecure, pc_user, Fresh Powered, dan beberapa lainnya. Tak satu pun dari mereka yang normal, IMO, entah mereka kekurangan fitur dasar, inheren INsecure, atau terlalu kembung untuk seleraku.
Sebenarnya, saya melakukan perincian terperinci dari semua perpustakaan otentikasi untuk CodeIgniter ketika saya menguji mereka (setelah Tahun Baru). FWIW, saya akan membagikannya kepada Anda:
Pro
- Berfitur sangat lengkap
- Jejak sedang (25+ file), tetapi berhasil merasa cukup ramping
- Dokumentasi yang bagus, meskipun beberapa dalam bahasa Inggris yang sedikit rusak
- Dukungan file bahasa
- reCAPTCHA didukung
- Menghubungkan ke sistem validasi CI
- Email aktivasi
- Akun yang tidak diaktifkan akan kedaluwarsa secara otomatis
- Sarankan grc.com untuk garam (tidak buruk untuk PRNG)
- Larangan dengan string 'alasan' yang tersimpan
- Penanganan kesalahan yang sederhana namun efektif
Cons
- Hanya memungkinkan pengguna 'mereset' kata sandi yang hilang (daripada membiarkan mereka memilih yang baru saat diaktifkan kembali)
- Homebrew pseudo-event model - niat baik, tetapi meleset dari sasaran
- Dua bidang kata sandi di tabel pengguna, gaya buruk
- Menggunakan dua tabel pengguna terpisah (satu untuk pengguna 'temp' - ambigu dan redundan)
- Menggunakan hashing md5 yang berpotensi tidak aman
- Upaya masuk yang gagal hanya disimpan oleh IP, bukan oleh nama pengguna - tidak aman!
- Kunci autologin tidak di-hash dalam database - praktis tidak aman seperti menyimpan kata sandi di cleartext!
- Sistem peran adalah kekacauan lengkap: fungsi is_admin dengan nama peran yang dikodekan keras, is_role kekacauan lengkap, check_uri_permissions adalah kekacauan, seluruh tabel izin adalah ide yang buruk (URI dapat mengubah dan membuat halaman tanpa perlindungan; izin harus selalu disimpan dengan tepat di mana logika sensitif berada). Pelaku transaksi!
- Termasuk CAPTCHA asli (miskin)
- Antarmuka fungsi reCAPTCHA berantakan
Pro
- Berfitur sangat lengkap
- Sebagian besar kode didokumentasikan dengan cukup baik
- Pemisahan data pengguna dan profil adalah sentuhan yang bagus
- Menghubungkan ke sistem validasi CI
- Email aktivasi
- Dukungan file bahasa
- Dikembangkan secara aktif
Cons
- Terasa sedikit kembung (50+ file)
- Namun tidak memiliki login cookie otomatis (!)
- Tidak mendukung login dengan nama pengguna dan email
- Tampaknya memiliki masalah dengan karakter UTF-8
- Membutuhkan banyak autoloading (menghambat kinerja)
- File konfigurasi micromanaged buruk
- Pemisahan View-Controller yang mengerikan, dengan banyak logika program dalam tampilan dan output yang dikodekan ke dalam controller. Pelaku transaksi!
- Kode HTML buruk dalam tampilan yang disertakan
- Termasuk CAPTCHA di bawah standar
- Debug debuged berkomentar di mana-mana
- Memaksa struktur folder tertentu
- Memaksa pustaka Ajax tertentu (dapat diaktifkan, tetapi seharusnya tidak ada di tempat pertama)
- Tidak ada batasan maksimal pada upaya login - SANGAT tidak aman! Pelaku transaksi!
- Pembajakan membentuk validasi
- Menggunakan hashing md5 yang berpotensi tidak aman
Pro
- Fitur yang baik diatur untuk tapaknya yang mungil
- Ringan, tanpa mengasapi (3 file)
- Login cookie otomatis yang elegan
- Dilengkapi dengan implementasi tes opsional (sentuhan yang bagus)
Cons
- Menggunakan sintaks basis data CI lama (kurang aman)
- Tidak terhubung ke sistem validasi CI
- Sistem status (peran) agak tidak intuitif (indeks terbalik - tidak praktis)
- Menggunakan hashing sha1 yang berpotensi tidak aman
Pro
- Jejak kecil (6 file)
Cons
- Tidak memiliki banyak fitur penting. Pelaku transaksi!
- Semuanya kode-keras. Pelaku transaksi!
Menurut wiki CodeIgniter , Redux telah dihentikan, tetapi garpu Ion Auth semakin kuat: https://github.com/benedmunds/CodeIgniter-Ion-Auth
Ion Auth adalah perpustakaan berfitur baik tanpa terlalu berat atau kurang maju. Dalam kebanyakan kasus, set fiturnya akan lebih dari sekadar memenuhi kebutuhan proyek.
Pro
- Ringan dan mudah diintegrasikan dengan CodeIgniter
- Mendukung pengiriman email langsung dari perpustakaan
- Komunitas pengguna / pengguna aktif yang didokumentasikan dengan baik dan aktif
- Mudah diimplementasikan ke dalam proyek
Cons
- Skema DB yang lebih kompleks daripada yang lain
- Dokumentasi kurang detail di beberapa area
Pro
- Jejak kecil (4 file)
- Minimalis, sama sekali tidak mengasapi
- Menggunakan phpass untuk hashing (luar biasa)
Cons
- Hanya login, logout, buat dan hapus
- Tidak memiliki banyak fitur penting. Pelaku transaksi!
- Lebih banyak titik awal daripada perpustakaan
Jangan salah paham: Saya tidak bermaksud untuk tidak menghormati salah satu perpustakaan di atas; Saya sangat terkesan dengan apa yang telah dicapai oleh pengembang mereka dan seberapa jauh masing-masing dari mereka telah datang, dan saya tidak menggunakan kembali beberapa kode mereka untuk membuat kode saya sendiri. Apa yang saya katakan adalah, kadang-kadang dalam proyek-proyek ini, fokus bergeser dari 'kebutuhan-untuk-dimiliki' yang penting (seperti praktik keamanan keras) ke 'kebaikan-untuk-dimiliki' yang lebih lunak, dan itulah yang saya harap dapat diperbaiki. .
Oleh karena itu: kembali ke dasar.
Inilah MINIMAL saya yang diperlukan daftar fitur dari perpustakaan otentikasi. Ini juga merupakan subset dari daftar fitur perpustakaan saya sendiri;)
- Jejak kecil dengan implementasi tes opsional
- Dokumentasi lengkap
- Tidak diperlukan autoloading. Pemuatan perpustakaan yang tepat waktu untuk kinerja
- Dukungan file bahasa; tidak ada string yang dikodekan
- reCAPTCHA didukung tetapi opsional
- Disarankan pembuatan garam acak TRUE (mis. Menggunakan random.org atau random.irb.hr)
- Add-on opsional untuk mendukung login pihak ketiga (OpenID, Facebook Connect, Akun Google, dll.)
- Login menggunakan nama pengguna atau email
- Pemisahan data pengguna dan profil
- Email untuk aktivasi dan kata sandi yang hilang
- Fitur login cookie otomatis
- Phpass yang dapat dikonfigurasi untuk hashing (tentu saja asin dengan benar!)
- Hashing kata sandi
- Hashing kode autologin
- Hashing kode kata sandi yang hilang
- Menghubungkan ke sistem validasi CI
- TIDAK ADA pertanyaan keamanan!
- Kebijakan server sisi kebijakan yang kuat, dengan validator sisi klien (Javascript) opsional
- Jumlah maksimum upaya login gagal yang dipaksakan dengan penanggulangan PRAKTEK TERBAIK terhadap serangan kamus dan DoS!
- Semua akses basis data dilakukan melalui pernyataan yang disiapkan (terikat)!
Catatan: poin-poin terakhir itu bukanlah kerja keras keamanan super tinggi yang tidak Anda perlukan untuk aplikasi web Anda. Jika pustaka otentikasi tidak memenuhi standar keamanan ini 100%, JANGAN GUNAKAN!
Contoh profil tinggi terbaru dari pembuat kode yang tidak bertanggung jawab yang meninggalkan mereka dari perangkat lunak mereka: # 17 adalah bagaimana email AOL Sarah Palin diretas selama kampanye Presiden; kombinasi jahat dari # 18 dan # 19 adalah pelakunya baru-baru ini ketika akun Twitter Britney Spears, Barack Obama, Fox News dan lainnya diretas; dan # 20 saja adalah bagaimana peretas Cina berhasil mencuri 9 juta item informasi pribadi dari lebih dari 70.000 situs web Korea dalam satu peretasan otomatis pada 2008.
Serangan-serangan ini bukan operasi otak. Jika Anda membiarkan pintu belakang terbuka lebar, Anda seharusnya tidak menipu diri sendiri dengan rasa aman yang salah dengan mengunci bagian depan. Selain itu, jika Anda cukup serius tentang pengkodean untuk memilih kerangka kerja praktik terbaik seperti CodeIgniter, Anda berhutang pada diri sendiri untuk setidaknya mendapatkan langkah-langkah keamanan paling dasar yang dilakukan dengan benar.
<rant>
Pada dasarnya, begini caranya: Saya tidak peduli apakah perpustakaan autentik menawarkan banyak fitur, manajemen peran lanjutan, kompatibilitas PHP4, font CAPTCHA yang cantik, tabel negara, panel admin lengkap, bel dan peluit - jika perpustakaan benar-benar membuat situs saya kurang aman dengan tidak mengikuti praktik terbaik. Ini adalah paket otentikasi ; perlu melakukan SATU hal dengan benar: Otentikasi. Jika gagal melakukan itu , itu sebenarnya lebih banyak merugikan daripada kebaikan.
</rant>
/ Jens Roland
Perhatikan bahwa "daftar komprehensif" oleh Jens Roland tidak termasuk peran pengguna. Jika Anda tertarik untuk menetapkan peran pengguna yang berbeda (seperti admin / pengguna atau admin / editor / pengguna), perpustakaan ini memungkinkan:
Tank_Auth (# 1 di atas dalam daftar Jens) tidak memiliki peran pengguna. Saya menyadari itu bukan bagian dari otentikasi, tetapi sejak itu
Masuk akal jika memiliki satu perpustakaan untuk menangani keduanya, jika Anda membutuhkannya. Saya beralih ke Ion_Auth dari Tank_Auth karena ini.
Ion_auth! Tampak sangat menjanjikan dan tapak kecil! Saya suka..
Saya adalah pengembang Redux Auth dan beberapa masalah yang Anda sebutkan telah diperbaiki dalam versi 2 beta. Anda dapat mengunduh ini dari situs web resmi dengan contoh aplikasi juga.
- Membutuhkan autoloading (menghambat kinerja)
- Menggunakan konsep 'pertanyaan keamanan' yang pada dasarnya tidak aman. Pelaku transaksi!
Pertanyaan keamanan sekarang tidak digunakan dan sistem kata sandi yang dilupakan lebih sederhana telah dibuat.
- Jenis pengembalian sedikit campur aduk kode true, false, error dan success
Ini diperbaiki di versi 2 dan mengembalikan nilai boolean. Aku benci gado-gado seperti kamu.
- Tidak terhubung ke sistem validasi CI
Aplikasi sampel menggunakan sistem validasi CI.
- Tidak mengizinkan pengguna mengirim ulang kode 'kata sandi hilang'
Bekerja dalam proses
Saya juga menerapkan beberapa fitur lain seperti tampilan email, ini memberi Anda pilihan untuk dapat menggunakan bantuan CodeIgniter dalam email Anda.
Ini masih dalam proses, jadi jika ada saran, harap tetap datang.
-Jagung meletus
Ps: Terima kasih telah merekomendasikan Redux.
Saya telah menemukan Flexi Auth ( http://haseydesign.com/flexi-auth/ ). Terlihat sangat menjanjikan, dan saya sudah mulai menggunakannya. Ini memiliki fitur luar biasa. Sepenuhnya terintegrasi dengan CI, dan dilengkapi dengan dua file pustaka yang berbeda, di mana satu sangat sarat dengan semua fungsi dan yang lainnya hanya berisi validasi.
Salah satu yang terbaik adalah bahwa anggota yang baru terdaftar mendapatkan akses sementara untuk jangka waktu tertentu di situs, sampai mereka mengklik tautan dari email mereka dan mengaktifkannya.
Mungkin Anda akan menemukan Redux sesuai dengan kebutuhan Anda. Ini tidak berlebihan dan dilengkapi hanya dengan fitur telanjang yang sebagian besar dari kita akan membutuhkan. Pengembang dan kontributor sangat ketat pada kode apa yang dikontribusikan.
Ini adalah halaman resmi
Saya menggunakan versi khusus Auth DX . Saya merasa mudah digunakan, sangat mudah dimodifikasi dan memiliki panduan pengguna (dengan contoh yang bagus) yang sangat mirip dengan Code Igniter.
Lihat juga BackendPro
Pada akhirnya Anda mungkin akan akhirnya menulis sesuatu yang kustom, tetapi tidak ada yang salah dengan konsep pinjaman dari DX Auth, Freak Auth, BackendPro, dll.
Pengalaman saya dengan aplikasi paket adalah mereka khusus untuk struktur tertentu dan saya punya masalah mengintegrasikan mereka ke dalam aplikasi saya sendiri tanpa memerlukan peretasan, maka jika pra-paket memiliki pembaruan, saya harus memindahkannya.
Saya juga menggunakan Smarty dan ADOdb dalam kode CI saya, jadi apa pun yang terjadi, saya selalu membuat perubahan kode utama.
Tank Auth terlihat bagus tetapi dokumentasinya hanya penjelasan satu halaman tentang cara menginstal, ditambah run-down cepat dari setiap file PHP. Setidaknya itulah yang saya temukan setelah banyak Googling. Mungkin yang dimaksud orang di atas ketika mereka mengatakan bahwa Tank Auth terdokumentasi dengan baik adalah bahwa kode tersebut dikomentari dengan baik. Itu hal yang baik, tetapi berbeda dari dokumentasi. Pasti menyenangkan memiliki beberapa dokumentasi tentang cara mengintegrasikan fitur-fitur Tank Auth dengan kode Anda yang ada.
Saya mencoba Ion_Auth dan menghargainya, btw ...
SimpleLoginSecure Membuat otentikasi sederhana dan aman.