Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apa cara yang benar dan aman/aman untuk membuat pengguna tetap masuk? kue? sidang? PHP &&MYSQL

Pertama, izinkan saya memberi tahu Anda ini. Tidak ada yang 100% aman. Tidak ada yang kedap udara, dan tidak ada yang suci. Jika cukup termotivasi, penyerang akan menghancurkan setiap pertahanan sisi server yang Anda buat (kecuali jika Anda menggunakan HTTPS, yang ceritanya berbeda).

Anda dapat menggunakan cookie, tetapi cookie sangat terbuka dan mudah dimodifikasi. Jangan pernah menyimpan data pribadi, atau tingkat akses dalam cookie. Karena mudah dicuri/dimodifikasi oleh penyerang.

Sesi juga tidak 100% aman. ID sesi, yang digunakan server untuk mengidentifikasi klien, dikirim dengan salah satu dari 2 cara. variabel $_GET (buruk), atau cookie (lebih baik, tetapi masih sangat buruk). Artinya, jika Anda masuk sebagai administrator, melalui WiFi yang tidak aman, penyerang yang terampil (dan yang saya maksud adalah pr0 haxx0r yang mengunduh sniffer HTTP sederhana) dapat dengan mudah mencuri ID SESI Anda. Dan meskipun tidak mendapatkan kata sandi Anda, server akan salah mengidentifikasi penyerang sebagai Anda, dan memberinya akses apa pun yang mungkin Anda miliki/miliki.

Jadi apa yang harus dilakukan? Sesi pada sebagian besar kasus aman. Anjurkan pengguna Anda untuk tidak login di bawah jaringan yang tidak aman (bus, warnet, dll.). Jika Anda ingin mengizinkan otorisasi pengguna Anda bertahan dari waktu ke waktu, cookie diperlukan. Saya biasanya menggunakan sistem 2 cookie jika saya membutuhkannya:

userid=12345
hash=password_hash($userid . $hashed_password, PASSWORD_DEFAULT)

Kemudian saya memiliki sesuatu untuk dicocokkan, dan detail pengguna tidak terungkap.

Tetapi seperti yang saya katakan, pada akhirnya, jika Anda benar-benar BENAR-BENAR ingin mengamankan pengguna Anda, di atas semua yang tertulis dalam jawaban ini, dapatkan HTTPS sendiri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menambahkan 1 ke nilai kolom dari baris yang ada di mysql

  2. Apakah menggunakan Tabel Master untuk kolom bersama praktik yang baik untuk seluruh database?

  3. Koneksi db otomatis ditutup di php?

  4. NameError:nama '_mysql' tidak ditentukan setelah perubahan pengaturan ke mysql

  5. 7 Cara Menemukan Baris Duplikat saat Mengabaikan Kunci Utama di MySQL