За последние 24 часа нас посетили 24197 программистов и 1654 робота. Сейчас ищут 863 программиста ...

Безопасность кук

Тема в разделе "PHP для новичков", создана пользователем machetero, 26 сен 2016.

  1. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Ставить куку с именем admin или is_admin я думаю даже обсуждать не стоит. Ставить куку user_id для идентификации пользователя тоже как то стрёмно. Как вообще правильно защититься от атак с подбором значения кук ? Ведь кто угодно может слать запрос с кукой user_id = 1, а у этого пользователя админ права например.
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Чем тебе сессионные php-шные куки не угодили? Их хрен подберешь. А вся инфа по пользователю пусть хранится на сервере в сессии. Включая его права, uder_id и так далее по списку.
     
  3. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    @machetero, это же обсуждалось много раз. достаточно кроме user_id поместить в куку какую-то дополнительную информацию, которую твой скрипт может проверить и убедиться, что кука не поддельная.

    например этот форум держит куку с именем xf_user. у меня там записано
    "23761,3406d4236f7550fac8e82f2e6ca241a20e523f68"
    где 23761 это скорее всего мой user_id, а за ним идет какая-о "подпись". форум проверяет подпись и принимает значение либо нет. подобное значение не менее секьюрно, чем PHPSESSID ;) кто сумеет сп*здить одно, спи*дит и другое.

    [ интересно сколько человек попытается сейчас воспользоваться моей кукой ]
     
    #3 artoodetoo, 26 сен 2016
    Последнее редактирование: 26 сен 2016
    machetero нравится это.
  4. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Я помню ты как то недавно сам писал, что сессии это чтоб по страничкам ходить и инфу таскать. А авторизовывать надо куками. Мне сессии не нравятся только одной причиной , они быстро удаляются и придётся опять логиниться.
    --- Добавлено ---
    вообщем храним захардкоженый my_signature и добавляем его хэш к каждой куке. так я понимаю ? при приёме куки отделяем юзерайди от хэша, и сверяем с хэшем нашей строки. всё понял спасибо что объяснил механизм с подписью
     
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А ты, небось, не будь дураком, пару буковок левых подкинул, а то и весь хэш ;)
    Все очень плохо. Это не я так сказал. Это ты так понял. Там речь шла, небось о том, что не надо делать сессии со сроком годности в 300 лет, чтобы сэмитировать галочку "Запомнить меня", да? И как это связано с выставлением прав в куках? И с авторизацией?
    --- Добавлено ---
    У тебя удивительная способность читать не то, что написано.
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.857
    Симпатии:
    656
    @machetero, а вы решили сделать авторизацию по куке user_id = 1? :) Это лишь идентификатор, а нужен еще сложный ключ. Вот почитайте ТЕКСТ.
     
  7. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Вообщем я не могу сам разобраться как надо делать подпись. Если подпись будет статичная то достаточно посмотреть свои куки и подставлять юзерайди к этой статичной строке. Буду благодарен Fell-x27, artoodetoo или кому либо кто мне объяснит всё.
     
  8. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Вот кто тебя просил палить! :D
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Давай определимся, для начала, что ты хочешь. Галочку "запомнить меня"? Если так, то кто тебе мешает генерить рандомную строку, писать ее в куку с флажком "http_only", что сделает ее недоступной для JS, и, параллельно сохранять ее на сервере где-нить в бд, в колонке у пользователей "last_token" какой-нибудь? И будет у каждого пользователя уникальная запоминалка. При этом сессионный файл может быть удален. Считай, что это эдакая suspended_session.
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.814
    Симпатии:
    1.332
    Адрес:
    Лень
    один прикол
    [​IMG]
     
  11. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Fell-x27 да нужна запоминалка, придётся видимо делать так как ты сказал
     
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Брутально. А смысл?