Форумы портала PHP.SU » » Вопросы новичков » Защита сессий

Страниц (1): [1]
 

1. Olegarh1a - 15 Февраля, 2021 - 16:27:05 - перейти к сообщению
Есть несколько вариантов на сколько они эффективны
1может создать своего рода электронный ключ который будет генерироваться случайно и при заходе проверять его (тогда прийдётся отдельную бд что ли делать если я правильно понимаю) ?
2привязывать сессию к пользователю (например к ip ну такое себе)- как по мне глупый вариант ?
3 Как вы защищаете свой сайт хотя бы расскажите логику Радость
4 Читал на хабре про соль(Salt) так и не понял. может у кого есть отличная статья где, куда, что солить и применение на реальном примере для (тугих Радость )
2. dcc0 - 16 Февраля, 2021 - 17:44:48 - перейти к сообщению
Доброго! Разве недостаточно для защиты протокола https?
3. kull - 17 Февраля, 2021 - 20:38:04 - перейти к сообщению
Соль - это набор букв, чисел, символов которые подставляются к паролю

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. $salt = 'fgdg456gh'; // это набор символов для соли
  4. $password = '12345'; // это пароль который указал юзер в инпуте
  5.  
  6. $psw = sha1($password.$salt); // все готово. md5 для паролей не подходит!
  7.  


так же можно в качестве соли использовать например дату, время в unix формате. В таком случае соль у каждого юзера будет 100% уникальной.
4. Lolya - 21 Февраля, 2021 - 10:06:34 - перейти к сообщению
dcc0 пишет:
Разве недостаточно для защиты протокола https?

Мда.. А подумать? Или лишь бы ляпнуть?
(Добавление)
Olegarh1a пишет:
Как вы защищаете свой сайт хотя бы расскажите логику


CODE (htmlphp):
скопировать код в буфер обмена
  1. function mksecret($length = 20){
  2. $set = array('a','A','b','B','c','C','d','D','e','E','f','F','g','G','h','H','i','I','j','J','k','K','l','L','m','M','n','N','o','O','p','P','q','Q','r','R','s','S','t','T','u','U','v','V','w','W','x','X','y','Y','z','Z','1','2','3','4','5','6','7','8','9');
  3. $str;for($i = 1; $i <= $length; $i++){$ch = rand(0, count($set)-1);$str .= $set[$ch];}return $str;}
  4.  
  5. if(!mkglobal("wantpassword")) stderr("Error", "<center>".$tracker_lang['dad']."</center><html><head><meta http-equiv=refresh content='5;url=/'></head></html>");
  6.  
  7. $secret = mksecret();$wantpasshash = md5($secret . $wantpassword . $secret);
  8.  
  9. function is_password_correct($password, $secret, $hash){
  10. return ($hash == md5($secret . $password . $secret) || $hash == md5($secret . trim($password) . $secret));}
  11.  
  12. if(!is_password_correct($password, $row['secret'], $row['passhash'])){
  13. // бла-бла-бла забанить или записать неверный вход с подсчетом (5 раз неверно и бан)
  14. }
  15.  
5. dcc0 - 21 Февраля, 2021 - 12:12:00 - перейти к сообщению
Если на сайте используется md5 + https .
Этого вроде бы обычно достаточно.
6. Vladimir Kheifets - 21 Февраля, 2021 - 15:27:45 - перейти к сообщению
Lolya пишет:
Мда.. А подумать? Или лишь бы ляпнуть?

Добрый день!
Мда.. не грубовато ли?

По вашему коду:
PHP:
скопировать код в буфер обмена
  1. function mksecret($length = 20){
  2.         $set = array('a','A','b','B','c','C','d','D','e','E','f','F','g','G','h','H','i','I','j','J','k','K','l','L','m','M','n','N','o','O','p','P','q','Q','r','R','s','S','t','T','u','U','v','V','w','W','x','X','y','Y','z','Z','1','2','3','4','5','6','7','8','9');
  3.         $str;
  4.         for($i = 1; $i <= $length; $i++)
  5.         {
  6.                 $ch = rand(0, count($set)-1);
  7.                 $str .= $set[$ch];
  8.         }
  9.         return $str;
  10. }

Зачем нужно в цикле вычислять count($set)-1 и для чего нужен массив $set
Результат не изменится если сделать так:
PHP:
скопировать код в буфер обмена
  1. function mksecret($length = 20){
  2.         $set="aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ123456789";  
  3.         $max=strlen($set);
  4.         for($i = 1; $i <= $length; $i++)
  5.         {
  6.                 $ch = rand(1, $max);
  7.                 $str .= $set[$ch];
  8.         }
  9.         return $str;
  10. }
  11.  

по поводу безопасности:
https://www.php.net/manual/ru/fa...sswords.fasthash
Цитата:
Почему популярные хеширующие функции, такие как md5() и sha1() не подходят для паролей?
Такие хеширующие алгоритмы как MD5, SHA1 и SHA256 были спроектированы очень быстрыми и эффективными.
При наличии современных технологий и оборудования, стало довольно просто выяснить результат
этих алгоритмов методом "грубой силы" для определения оригинальных вводимых данных.
Из-за той скорости, с которой современные компьютеры могут "обратить" эти хеширующие алгоритмы,
многие профессионалы компьютерной безопасности строго не рекомендуют использовать
их для хеширования паролей.
7. dcc0 - 21 Февраля, 2021 - 16:14:08 - перейти к сообщению
Vladimir Kheifets,
Доброго! Спасибо за ответ.
Я читал о возможности генерировать коллизии в md5 и sha1.
Видел базы с популярными md5
Однако, показалось, что нахождение коллизий крайне ресурсоёмкая задача.
Слышал про радужные таблицы, но не наблюдал воочию ни одной рабочей программы
для взлома md5 с помощью RainbowCrack.

По идее, если я не ошибаюсь, механизм работы с сайтом по https дополнительно шифрует
передаваемые данные от пользователя к серверу.
Перехватывать данные аткой man-in-the-middle уже смысла особенно нет. Т.е. id сессии и данные в целом будут дополнительно зашифрованы при передаче.

Случай полной утраты копии базы данных сайта со всей информацией не рассматриваю.
(Так как уже неизвестно в такой ситуации, какие данные являются действительно важными).

Я написал подробно для понимания того, из чего я исхожу. Мне кажется, что стоит оценивать реальные риски при применении нестандартных средств защиты.
8. Строитель - 21 Февраля, 2021 - 17:54:45 - перейти к сообщению
Lolya, не хамите!
9. Vladimir Kheifets - 21 Февраля, 2021 - 18:14:25 - перейти к сообщению
dcc0 пишет:
...Мне кажется, что стоит оценивать реальные риски при применении нестандартных средств защиты.

Вернёмся, к заданному вопросу о защите сессии. Если зломышленник доберётся до сервера, т.е взламает адмим-логин, то ничего не поможет ни соль, не сахар.
Как бы Вы не шифровали пароли Ваших пользователей сайта, установленного на этом сервере.
Про md5 и sha1 и т.д. - "отцы основатели" советуют использовать для шифрования функции crypt и password_hash, а для проверки паролей password_verify.
Про https, да это важно для безопасности, особенно при работе с платёжными сервисами через cUrl.
Конечно, защита должна быть адекватна возможному ущербу от взлома.
Между прочим, начиная с января этого год действует новый стандарт 3D Secure 2 (3DS2).
Это действительно серьёзно, т.к. придётся переделывать существущие интерфейсы.
10. Lolya - 22 Февраля, 2021 - 09:06:25 - перейти к сообщению
Vladimir Kheifets пишет:
Мда.. не грубовато ли?

Строитель пишет:
Lolya, не хамите!

А где вы оскорбление увидели? Или то что человек не думая выдает глупые мысли это нормально? Не смешите. HTTPS не спасает от воровства, от слова никак. Читать надо прежде чем ерунду писать.
11. Vladimir Kheifets - 22 Февраля, 2021 - 14:09:50 - перейти к сообщению
Lolya пишет:
Vladimir Kheifets пишет:
Мда.. не грубовато ли?

Строитель пишет:
Lolya, не хамите!

А где вы оскорбление увидели? Или то что человек не думая выдает глупые мысли это нормально? Не смешите. HTTPS не спасает от воровства, от слова никак. Читать надо прежде чем ерунду писать.

Добрый день!
Объяснять и переубеждать в некоторых случаях бесполезно.
Попробуйте сказать кому-то, глядя в глаза, то что Вы пишите и не считаете грубостью.
Желательно, выбрать собеседника поздоровее.
Удачи!
12. Lolya - 22 Февраля, 2021 - 18:20:47 - перейти к сообщению
Vladimir Kheifets пишет:
Желательно, выбрать собеседника поздоровее.

Я на самбо и техвандо ходила, хоть и слабая девушка, но выдать могу неглядя кому надо пилюлей.

 

Powered by ExBB FM 1.0 RC1