Saya ingin tahu apa yang dianggap orang sebagai praktik terbaik untuk mengamankan bagian Admin situs web, khususnya dari sudut pandang otentikasi / akses.
Tentu saja ada hal-hal yang jelas, seperti menggunakan SSL dan mencatat semua akses, tetapi saya bertanya-tanya di mana di atas langkah-langkah dasar ini orang-orang menganggap bilah harus disetel.
Sebagai contoh:
- Apakah Anda hanya mengandalkan mekanisme otentikasi yang sama yang Anda gunakan untuk pengguna biasa? Jika tidak, apa?
- Apakah Anda menjalankan bagian Admin di 'domain aplikasi' yang sama?
- Langkah apa yang Anda ambil untuk membuat bagian admin tidak ditemukan? (atau apakah Anda menolak keseluruhan 'ketidakjelasan')
Sejauh ini, saran dari penjawab meliputi:
- Memperkenalkan jeda sisi server buatan ke dalam setiap pemeriksaan sandi admin untuk mencegah serangan brute force [Seni Pengembang]
- Gunakan halaman login terpisah untuk pengguna dan admin menggunakan tabel DB yang sama (untuk menghentikan XSRF dan pemberian akses pencurian sesi ke area admin) [Thief Master]
- Pertimbangkan juga untuk menambahkan otentikasi asli server web ke area admin (mis. Melalui .htaccess) [Master Pencuri]
- Pertimbangkan untuk memblokir IP pengguna setelah sejumlah upaya login admin yang gagal [Thief Master]
- Tambahkan captcha setelah upaya login admin yang gagal [Thief Master]
- Sediakan mekanisme yang sama kuatnya (menggunakan teknik di atas) untuk pengguna dan juga admin (misalnya, jangan perlakukan admin secara khusus) [Lo'oris]
- Pertimbangkan otentikasi tingkat kedua (mis. Sertifikat klien, kartu pintar, ruang kartu, dll.) [JoeGeeky]
- Hanya izinkan akses dari IP / Domain tepercaya, tambahkan pemeriksaan ke pipeline HTTP dasar (misalnya, HttpModules) jika memungkinkan. [JoeGeeky]
- [ASP.NET] Kunci IPrincipal & Principal (buat mereka tetap dan tidak dapat dihitung) [JoeGeeky]
- Peninggian Hak Federasi - mis. Mengirim email ke admin lain ketika hak admin mana pun ditingkatkan. [JoeGeeky]
- Pertimbangkan hak yang sangat rinci untuk admin - mis. Daripada hak berdasarkan peran, tentukan hak untuk tindakan indikidual per admin [JoeGeeky]
- Batasi pembuatan admin - mis. Admin tidak dapat mengubah atau membuat akun admin lain. Gunakan klien 'superadmin' yang dikunci untuk ini. [JoeGeeky]
- Pertimbangkan Sertifikat SSL Sisi Klien, atau keyfobs jenis RSA (token elektronik) [Daniel Papasian]
- Jika menggunakan cookie untuk Otentikasi, gunakan cookie terpisah untuk admin dan halaman normal, misalnya dengan meletakkan bagian admin di domain yang berbeda. [Daniel Papasian]
- Jika praktis, pertimbangkan untuk menyimpan situs admin di subnet pribadi, dari internet publik. [John Hartsock]
- Terbitkan ulang tiket autentikasi / sesi saat berpindah antara admin / konteks penggunaan normal situs web [Richard JP Le Guen]
security
authentication
UpTheCreek
sumber
sumber
Jawaban:
Ini semua adalah jawaban yang bagus ... Saya biasanya ingin menambahkan beberapa lapisan tambahan untuk bagian administratif saya. Meskipun saya telah menggunakan beberapa variasi pada sebuah tema, umumnya termasuk salah satu dari yang berikut:
sumber
Jika situs web memerlukan login untuk aktivitas reguler dan admin, misalnya forum, saya akan menggunakan login terpisah yang menggunakan database pengguna yang sama. Ini memastikan bahwa XSRF dan pencurian sesi tidak akan mengizinkan penyerang mengakses area administratif.
Selain itu, jika bagian admin berada dalam subdirektori terpisah, mengamankannya dengan autentikasi server web (misalnya .htaccess di Apache) mungkin merupakan ide yang bagus - maka seseorang memerlukan kata sandi dan kata sandi pengguna tersebut.
Menyamarkan jalur admin hampir tidak menghasilkan keuntungan keamanan - jika seseorang mengetahui data login yang valid, kemungkinan besar dia juga dapat mengetahui jalur alat admin karena dia melakukan phishing atau memasukkan Anda ke keylog atau mendapatkannya melalui manipulasi psikologis (yang mungkin akan mengungkapkan jalan juga).
Perlindungan brute-force seperti memblokir IP pengguna setelah 3 kali login gagal atau memerlukan CAPTCHA setelah login gagal (bukan untuk login pertama karena itu sangat mengganggu bagi pengguna yang sah) mungkin juga berguna.
sumber
Ya, setelah menulisnya, saya menyadari bahwa jawaban ini dapat diringkas sebagai "tidak ada yang istimewa untuk login admin, semuanya adalah fitur keamanan yang harus digunakan untuk login apa pun".
sumber
Jika Anda hanya menggunakan satu login untuk pengguna yang memiliki hak istimewa pengguna biasa dan hak istimewa admin, buat ulang pengenal sesi mereka (baik itu dalam cookie atau parameter GET atau apa pun ...) bila ada perubahan pada tingkat hak istimewa ... setidaknya.
Jadi jika saya masuk, melakukan banyak hal pengguna biasa dan kemudian mengunjungi halaman admin, buat ulang ID sesi saya. Jika saya kemudian keluar dari halaman admin ke halaman pengguna biasa, buat kembali ID saya.
sumber
Miliki kata sandi admin yang baik.
Bukan
"123456"
hanya urutan huruf, angka dan karakter khusus yang cukup panjang, katakanlah, 15-20 karakter. Suka"ksd83,'|4d#rrpp0%27&lq(go43$sd{3>"
.Tambahkan jeda untuk setiap pemeriksaan kata sandi untuk mencegah serangan brute force.
sumber
Berikut beberapa hal lain yang perlu dipertimbangkan:
sumber
Kami gunakan
Windows Authentication
untuk akses admin. Ini adalah cara paling praktis untuk melindungi area admin sambil menjaga otentikasi terpisah dari apa yang berlaku untuk pengguna akhir umum. Admin sistem mengelola kredensial akses pengguna Admin dan memberlakukan kebijakan sandi pada akun pengguna domain.sumber
Cara yang ketat adalah memiliki dua "peternakan" yang berbeda termasuk database, server dan semua dan memindahkan data dari satu peternakan ke yang lain. Sebagian besar sistem modern dan berskala besar menggunakan pendekatan ini (Vinyet, SharePoint, dll.). Ini biasanya disebut memiliki tahapan yang berbeda "tahap pengeditan" -> "tahap pratinjau" -> "tahap pengiriman". Metode ini memungkinkan Anda memperlakukan content / config dengan cara yang sama seperti Anda memperlakukan kode (dev-> qa-> prod).
Jika Anda tidak terlalu paranoid, Anda dapat memiliki satu database tetapi hanya bagian admin Anda yang tersedia di server "pengeditan". Maksud saya, hanya skrip / file pengeditan yang ditempatkan di server pengeditan.
Secara alami, tahap pengeditan seharusnya hanya tersedia di intranet lokal dan / atau menggunakan VPN.
Ini mungkin tampak sedikit berlebihan dan mungkin bukan solusi termudah untuk semua kasus penggunaan, tetapi jelas merupakan cara paling kuat untuk melakukan sesuatu.
Perhatikan bahwa hal-hal seperti "memiliki kata sandi admin yang kuat" itu bagus, tetapi tetap membiarkan admin Anda terbuka untuk segala jenis serangan cerdas.
sumber
Ini sangat tergantung pada jenis data yang ingin Anda lindungi (persyaratan hukum dan semacamnya).
Banyak saran tentang otentikasi .. Saya pikir Anda hanya harus mempertimbangkan untuk menggunakan otentikasi OpenId / Facebook sebagai login. (Mereka kemungkinan besar akan menghabiskan lebih banyak sumber daya untuk keamanan otentikasi daripada Anda)
Simpan perubahan serta perbarui nilai dalam database. Dengan begitu Anda dapat mengembalikan perubahan dari pengguna X atau antara tanggal X dan Y.
sumber
Saya tidak melihat ada yang menyebutkan penyimpanan / validasi kata sandi admin. Tolong jangan simpan PW dalam teks biasa, dan sebaiknya jangan sesuatu yang dapat dibalik - gunakan sesuatu seperti hash MD5 yang diasinkan sehingga paling tidak jika seseorang mengambil "kata sandi" yang tersimpan, mereka tidak punya apa pun yang sangat berguna, kecuali mereka juga memiliki skema garam Anda.
sumber
Tambahkan bidang kata sandi dan pertanyaan keamanan yang akan diketahui oleh Administrator, misalnya siapa nama pacar pertama Anda, atau acak pertanyaan setiap kali melihat panel admin.
Mungkin Anda selalu bisa meletakkan bagian administrasi di direktori besar, mis
Tapi itu tidak terlalu bagus hah.
Mungkin Anda bisa memasukkan string kueri di halaman beranda, seperti:
Jika ya, bidang nama pengguna dan kata sandi akan muncul.
sumber