За последние 24 часа нас посетили 20308 программистов и 1093 робота. Сейчас ищут 842 программиста ...

Запрет на повторное использование Cookies

Тема в разделе "Прочие вопросы по PHP", создана пользователем RomanVitte, 27 июн 2019.

  1. RomanVitte

    RomanVitte Новичок

    С нами с:
    14 май 2019
    Сообщения:
    5
    Симпатии:
    0
    Доброго времени суток, друзья !

    Решил сделать алгоритм "вечной авторизации" через кукки. Проще говоря, "запомнить меня".
    Шифрую в кукки пароль и ещё некоторые данные . Когда человек заходит на сайт , то запускаем сессию .

    Взлом через кукки до сих пор актуален. Просто нужно украсть их и вставить в свой браузер .

    Вопрос:
    Как через PHP или с помощью других методов запретить повторное использование кукки ?
    https://xakep.ru/2013/07/23/60961/
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @RomanVitte, ты из вечной авторизации хочешь сделать одноразовую? Есть вариант проще... ничего не делать.
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    ты о чем ?

    Мне как раз тоже интересна логика защиты в данном направлении. Т.к в своем говне давно обнаружил дыру на эту тему. По айпи адресу и читать не хочу - это бред будет как раз "одноразовый".
    --- Добавлено ---
    Человек сидит за компом, авторизованный в одном сервисе. В один момент ему приспичило отойти. Тем временем недруг пользуется моментом, жмет F12 и запоминает хеш куки + чекая что за браузер.
     
  4. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @MouseZver, там логики вагон и маленькая тележка, разрывать соединение по IP нельзя, но как "флаг" контролировать нужно, и при смене IP запускать алгоритм проверки "свой-чужой". Тема достаточно сложная, но если раскрывать секреты, они перестанут быть секретами, поэтому алгоритм нужен грубо говоря каждому свой. И банальным запретом повторного использования куки тут не отделаешься.
     
  5. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    хм...

    Открываем статью (2013 год, ужос), переходим по ссылке, где чувак описывает вектор атаки, кратко:

    1. Открываем сайт, логинемся.
    2. Копируем установленные куки.
    3. Выходим из сайта
    4. Восстанавливаем куки.
    5. Профит!
    6. remember token
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    Чтобы кука имела предельный срок действия, в сам механизм куки заложено поле со сроком её прокисания. На стороне PHP это выглядит как параметр expire функции setcookie. Можно поделать, конечно, но простой копи-пейст уже не канает. Используйте срок действия куки.

    Кроме того, зашифрованное в куки значение может включать в себя метку времени. Когда [ старая/чужая ] кука будет расшифрована на стороне сервера, можно сравнить эту метку с текущим временем и признать значение невалидным. Чтобы подделать такое, злопыхателю понадобится знать закрытый ключ, а это почти нереально. Используйте срок действия в теле зашифрованной куки. Ну или не зашифрованной, а подписанной секретным ключем.
    Понятно объясняю?

    Допустим кука содержит такое значение, сериализованное как json или любым другим способом:
    data: [user_id: 123, expire: '2019-06-30 18:20:00'], hash: 234567lkjhg34567l;kjhgxcvbn
    хеш вычислен из значения data + секретный ключ. чтобы проверить такую подпись, вычисляем хеш заново. если злопыхатель подделает любую часть data, хеш не сойдётся.
    если хеш верный, тогда проверяем значение expire, не прокисли ли эти данные.
    --- Добавлено ---
    вот пароль не стоит помещать в куку, правда! просто незачем.
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    И ? в чем прикол ? Ведь недруг значения зашифрованные скомуниздил, время жизни аналогичное поставил... а они такие же как у жертвы.
    --- Добавлено ---
    Мои данные на этом форуме
    Куки: xf_user
    Срок: Sun, 28 Jul 2019 13:38:23 GMT - от нее толку 0
    Значение: 40235%2Cf72e0024747b183b350ade87c5d9bc85dbb47191
    (делете сессионные куки)

    Браузер - Мозилла(чистая) ласт

    Зайду сегодня в 23 часа вечера по мск. Если зайдет кто - нибудь, напишите тут хрень всякую.
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    «Вечная авторизация» – зло. Используй серверный expire на несколько часов (с продлением). Вот что у меня в комментах написал товарищ, занимающийся защитой: http://gency.ru/comment/64 Плюс можно периодически менять ключ. А то он у меня там только при явном выходе меняется! Т.е. даже при повторном входе не меняется :) Это было сделано специально, чтобы можно было держать несколько девайсов одной сессией.
     
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    @MouseZver, все выкладывай :)
    php.ru PHPSESSID
    .php.ru _ym_uid
    .php.ru _ym_d
    .php.ru _ym_isad
    php.ru xf_user
    php.ru xf_session
    --- Добавлено ---
    Хотя _ym_* – это походу Метрика.
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    xf_user отвечает за все, если ты куришь тему.

    Не удержался, проверил через другой комп... 40235%2Cf72e0024747b183b350ade87c5d9bc85dbb47191
    Зашел..
    --- Добавлено ---
    Хоть обхешируйся вдоволь со значением на сервере, не повлияет на работу в чужом ОС. Тупо лишние движения в скриптах - толку 0
     
  11. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Нафиг тогда этому XF вообще нужна кука PHPSESSID? Хотя чему я удивляюсь?! Лень и дебилизм всегда идут с нами по жизни :)
     
  12. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @miketomlin, а если хорошо подумать?
     
  13. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    Мне вообще система с сессионной кукой + "запомни меня" кукой кажется костылём. Можно было обойтись одной записью с нужным атрибутом устаревания. А что до копирования, ну этому можно сопротивляться через "отпечаток" (fingerprint).
     
  14. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Очевидно же, для поддерживания сессии "на данный момент". Удалив xf_user, ничего не изменится, пока ты не перезапустишь браузер.
    --- Добавлено ---
    Там так же свои косяки.
     
    #14 MouseZver, 29 июн 2019
    Последнее редактирование: 29 июн 2019