Mysql
 sql >> база данни >  >> RDS >> Mysql

Какъв е правилният и безопасен/сигурен начин да запазите потребителя влязъл? бисквитки? сесия? PHP &&MYSQL

Първо, нека ви кажа това. Нищо не е 100% сигурно. Нищо не е херметично и нищо не е свято. Ако е достатъчно мотивиран, нападателят ще наруши всяка защита от страна на сървъра, която може да поставите (освен ако не използвате HTTPS, което е различна история).

Може да използвате бисквитки, но бисквитките са силно изложени и лесно се променят. Никога не съхранявайте лични данни или нива на достъп в бисквитка. Тъй като е лесно откраднат/променен от нападател.

Сесиите също не са 100% безопасни. Идентификаторът на сесията, който сървърът използва за идентифициране на клиента, се изпраща по един от 2 начина. променлива $_GET (лоша) или бисквитка (по-добра, но все пак доста лоша). Това означава, че ако сте влезли като администратор, през незащитен WiFi, опитен нападател (и под квалифициран имам предвид pr0 haxx0r, който е изтеглил обикновен HTTP снифер) може лесно да открадне вашия идентификационен номер на SESSION. И докато не получи паролата ви, сървърът ще идентифицира погрешно нападателя като вас и ще му предостави всеки достъп, който може да имате/имал.

И така, какво да правя? В повечето случаи сесиите са безопасни. Посъветвайте потребителите си да не влизат в незащитена мрежа (автобуси, интернет кафенета и др.). Ако искате да позволите на вашето потребителско оторизиране да продължи с течение на времето, е необходима бисквитка. Обикновено използвам система с 2 бисквитки, ако имам нужда от това:

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

Тогава имам какво да съпоставям и данните за потребителя не бяха разкрити.

Но както казах, в крайна сметка, ако наистина НАИСТИНА искате да защитите потребителите си, по-горе към всичко останало, написано в този отговор, вземете си HTTPS.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Подреждане по реда на стойностите в SQL IN() клауза

  2. Някой откривал ли е, че REGEX \b не работи в MYSQL?

  3. Обработка и регулация на връзката с ProxySQL

  4. MySQL заявка, където JOIN зависи от CASE

  5. Задействане на SQL заявка при натискане на бутон?