Bagaimana saya harus memilih perpustakaan otentikasi untuk CodeIgniter? [Tutup]

398

Saya melihat ada beberapa . Mana yang dipelihara dan mudah digunakan? Apa pro dan kontra mereka?

GavinR
sumber
8
Jika Anda masih tertarik, lihat Tank Auth. Saya baru saja memperbarui posting saya di bawah setelah memeriksanya, dan itu sangat bagus.
Jens Roland
7
Terima kasih atas pembaruannya! Ini akan menjadi informasi berharga bagi pengunjung untuk pertanyaan ini di masa mendatang, jadi saya mengubah jawaban yang diterima.
GavinR
3
Kenapa tiba-tiba tutup? Tampaknya sangat cocok dengan enam pedoman pertanyaan subyektif.
Brian Ortiz
3
Dinominasikan untuk dibuka kembali. Menjawab pertanyaan yang saya miliki (sistem otentikasi apa dalam CI yang layak dilihat) dengan sempurna.
Cruachan
3
Setuju dengan @BrianOrtiz dan Cruachan: Kenapa tutup? Pertanyaan bagus, dan jawaban bagus.
Peter K.

Jawaban:

465

Pembaruan (14 Mei 2010):

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:

Auth Tank

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)

Unduh Tank Auth di sini


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:

DX Auth

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

FreakAuth Light

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

pc_user

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

Didukung Baru

Pro

  • Jejak kecil (6 file)

Cons

  • Tidak memiliki banyak fitur penting. Pelaku transaksi!
  • Semuanya kode-keras. Pelaku transaksi!

Redux / Ion Auth

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

SimpleLoginSecure

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.

Otentikasi untuk CodeIgniter dilakukan dengan benar

Inilah MINIMAL saya yang diperlukan daftar fitur dari perpustakaan otentikasi. Ini juga merupakan subset dari daftar fitur perpustakaan saya sendiri;)

  1. Jejak kecil dengan implementasi tes opsional
  2. Dokumentasi lengkap
  3. Tidak diperlukan autoloading. Pemuatan perpustakaan yang tepat waktu untuk kinerja
  4. Dukungan file bahasa; tidak ada string yang dikodekan
  5. reCAPTCHA didukung tetapi opsional
  6. Disarankan pembuatan garam acak TRUE (mis. Menggunakan random.org atau random.irb.hr)
  7. Add-on opsional untuk mendukung login pihak ketiga (OpenID, Facebook Connect, Akun Google, dll.)
  8. Login menggunakan nama pengguna atau email
  9. Pemisahan data pengguna dan profil
  10. Email untuk aktivasi dan kata sandi yang hilang
  11. Fitur login cookie otomatis
  12. Phpass yang dapat dikonfigurasi untuk hashing (tentu saja asin dengan benar!)
  13. Hashing kata sandi
  14. Hashing kode autologin
  15. Hashing kode kata sandi yang hilang
  16. Menghubungkan ke sistem validasi CI
  17. TIDAK ADA pertanyaan keamanan!
  18. Kebijakan server sisi kebijakan yang kuat, dengan validator sisi klien (Javascript) opsional
  19. Jumlah maksimum upaya login gagal yang dipaksakan dengan penanggulangan PRAKTEK TERBAIK terhadap serangan kamus dan DoS!
  20. 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

Jens Roland
sumber
1
Saya masih di sana, mengalami masalah arsitektur yang buruk dan harus memilih antara meretas solusi bersama yang cepat (yang akan bekerja dengan baik tetapi menderita kopling ketat), atau duduk dan berpikir keras tentang bagaimana melakukannya dengan benar . Saya memilih opsi yang terakhir, dan masih belum memecahkannya: D
Jens Roland
2
Jens, Anda mungkin ingin melihat Auth Tank yang tampaknya telah dibuat dalam menanggapi posting Anda (sangat baik): codeigniter.com/forums/viewthread/110993
Richard M
8
Bisakah Anda memperbarui posting ini dan membandingkannya dengan Ion-Auth (berasal dari dx-auth)? Sepertinya ion-auth lebih mutakhir dan aktif daripada tank-auth pada saat ini. Saya ingin tahu dari sudut pandang keamanan apakah sebagus Tank-auth atau tidak, karena memiliki beberapa fitur tambahan yang mungkin berguna.
Vijay
1
Semua perpustakaan ini menggunakan mysql .. namun saya menggunakan MongoDb yang merupakan basis data noSql. Apakah ada perpustakaan yang berfungsi dengan MoongoDB? Saya mencoba mengubah salah satu perpustakaan di atas untuk dimasukkan ke dalam MongoDB, bukan MySql tetapi terlalu rumit dan ingin tahu perpustakaan yang sudah melakukan ini
Ninja
2
@Lykos: Tentu - Data pengguna akan menjadi data spesifik auth seperti UserID, UserName, Email, PasswordHash, LastLoginTime, dll. Data profil harus disimpan dalam tabel DB terpisah dan bisa berupa apa saja, tergantung pada aplikasi spesifik. Ini dapat mencakup hal-hal seperti ulang tahun, jenis kelamin, kota asal, skor reputasi, dll. Dengan cara ini, pengembang aplikasi dapat memodifikasi tabel ProfileData dengan cara apa pun yang mereka suka, tanpa harus khawatir tentang sistem auth yang tiba-tiba rusak.
Jens Roland
58

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:

  • Ion_Auth (menulis ulang Redux)
  • Redux
  • Backend Pro

Tank_Auth (# 1 di atas dalam daftar Jens) tidak memiliki peran pengguna. Saya menyadari itu bukan bagian dari otentikasi, tetapi sejak itu

  • otentikasi dan manajemen peran keduanya ditangani pada pemuatan halaman
  • Keduanya melibatkan keamanan
  • Tabel / model yang sama dapat digunakan untuk keduanya.
  • Keduanya dapat diatur untuk memuat di konstruktor pengontrol (atau bahkan memuat otomatis)

Masuk akal jika memiliki satu perpustakaan untuk menangani keduanya, jika Anda membutuhkannya. Saya beralih ke Ion_Auth dari Tank_Auth karena ini.

Burton Kent
sumber
Ah, lihat, itu benar-benar baik untuk diketahui - senang memiliki semua aspek dalam satu perpustakaan, membuat semuanya sederhana dan fungsional. Harus melihat ke Ion_Auth hanya untuk alasan itu! Burton terima kasih!
Edd Twilbeck
4
Itu adalah poin yang baik, tentu saja, dan manajemen peran (otorisasi secara umum) adalah bagian sentral dari banyak situs, terkait erat dengan sistem otentikasi. Namun, saya akan memilih sistem otentikasi aman dengan manajemen peran sederhana atau tidak ada daripada sistem otentikasi rentan dengan manajemen peran bawaan canggih setiap hari.
Jens Roland
Ion_Auth bekerja dengan baik dengan CI 2.1, dan DataMapper ORM
user482594
37

Ion_auth! Tampak sangat menjanjikan dan tapak kecil! Saya suka..

http://github.com/benedmunds/CodeIgniter-Ion-Auth

Marko
sumber
Ion Auth berfungsi dengan baik untuk saya juga, memiliki semua yang saya butuhkan dan tidak saya tidak (seperti pertanyaan rahasia dan sejenisnya).
SolidSmile
1
Ion Auth terlihat seperti pemimpin saat ini dalam hal penggunaan, fitur dan ringan.
pbreitenbach
5
Saya telah mencoba kedua Auth Tank dan Auth Ion dan saya dapat mengatakan bahwa kode Auth Tank jauh lebih bersih, lebih mudah dimengerti dan lebih mudah untuk memperpanjang daripada Ion Auth. Di sisi lain Ion Auth mendukung 'peran'.
Jonathan
30

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.

Svish
sumber
1
Oh hai Mathew - dan terima kasih telah meluangkan waktu untuk menjawab posting saya. Beta ini terdengar sangat menarik - karena saya yakin Anda perhatikan, Redux sudah datang paling dekat untuk mendapatkan semuanya dengan baik di round-up saya, jadi saya akan segera memeriksanya.
Jens Roland
Baru saja melihat sekilas thread Forum CI dan peta jalan. Terlihat bagus - berkenaan dengan garam 'dinamis', saya sarankan menggabungkan (tanggal reg). (kunci hash file konfigurasi). (kode atau kata sandi) untuk menggagalkan tabel pelangi dan brute force pada database yang dicuri
Jens Roland
Juga, saya memiliki beberapa pemikiran tentang praktik terbaik auth ( stackoverflow.com/questions/549/… ) dan pelambatan botnet ( stackoverflow.com/questions/479233/... ) Anda mungkin ingin melindas
Jens Roland
14

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.

Suthan Bala
sumber
Terima kasih untuk tautan ini. Ini juga memiliki fitur bagus lain dari Flexi Cart haseydesign.com/flexi-cart .
Vir
13

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

Filip Dupanović
sumber
1
apakah versi saat ini mendukung versi terbaru dari Code Igniter? Sepertinya belum ada pembaruan dalam waktu yang lama. Kalau tidak, aku suka itu.
GavinR
Saya menggunakan Redux dengan versi CI terbaru di situs produksi. Ini sangat ringan, seperti CI dan sangat dapat disesuaikan.
GloryFish
1
Redux lebih lama dipertahankan, lihat diskusi ini. codeigniter.com/forums/viewthread/145342
Pengembang Pixel
Ion Auth didasarkan pada Redux Auth 2, dan itu yang akan saya gunakan. PyroCMS juga menggunakannya. github.com/benedmunds/CodeIgniter-Ion-Auth
Robert Audi
8

Ion_Auth mengalahkan tank_auth terutama karena dua alasan, peran pengguna dan dokumentasi, keduanya hilang dari tank_auth.

nedu
sumber
4

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.

Adam
sumber
3

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.

pengguna1284303
sumber
3

Saya mencoba Ion_Auth dan menghargainya, btw ...

SimpleLoginSecure Membuat otentikasi sederhana dan aman.

Fabiano Shark
sumber