ФорумПрограммированиеPHP для идиотов → Проверка подлинности форм

Проверка подлинности форм

  • save()

    Сообщения: 27 Репутация: N Группа: Кто попало

    Spritz 23 октября 2010 г. 15:53

    Как правильно "по пацански" проверить данные пришедшие с форм на наличие подлинности, без всяких $_SERVER['HTTP_REFERER'] и session id в хидден поле. Если я все правильно понимаю это все херня и толку от них 0.


    Хотел поиском воспользоваться, а он мне на любой вопрос отвечает "Ошибка базы данных". Так что если уже была такая тема, я ее не нашел)
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 23 октября 2010 г. 15:55, спустя 2 минуты 32 секунды

    form id
    Спустя 45 сек.
    короче уникальный идентификатор формы, выдаваемый ей при генерации, и ожиидаемый при получении
    не всё полезно, что в swap полезло
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 23 октября 2010 г. 15:56, спустя 34 секунды

    google "csrf token"
    ιιlllιlllι унц-унц
  • arvitaly

    Сообщения: 292 Репутация: N Группа: Адекваты

    Spritz 23 октября 2010 г. 15:57, спустя 51 секунду

    Если я все правильно понимаю это все херня и толку от них 0.


    правильно понимаешь!
  • save()

    Сообщения: 27 Репутация: N Группа: Кто попало

    Spritz 23 октября 2010 г. 16:11, спустя 14 минут 35 секунд


    google "csrf token"
    artoodetoo, спасибо, нашел.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 24 октября 2010 г. 9:21, спустя 17 часов 9 минут 55 секунд

    правильно понимаешь!

    если session_id - кука с httpOnly=true - то толк есть
  • arvitaly

    Сообщения: 292 Репутация: N Группа: Адекваты

    Spritz 24 октября 2010 г. 11:19, спустя 1 час 58 минут 5 секунд

    если session_id - кука с httpOnly=true - то толк есть


    какой?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 24 октября 2010 г. 11:24, спустя 4 минуты 55 секунд

    такой же как от csrf токена
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 24 октября 2010 г. 12:04, спустя 39 минут 55 секунд

    session_id сам по себе идентифицирует только пользовательский сеанс работы, а токен, как правило, еще какую-то информацию о форме-отправителе. по крайней мере вики так говорит. поэтому он даёт чуть больше защиты от взлома через JS-инъекцию. зависит от реализации, конечно. можно облажаться в любой технологии.
    ιιlllιlllι унц-унц
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 24 октября 2010 г. 12:25, спустя 21 минуту 22 секунды

    шаблон формы
    <form method="post">

    <input type="hidden" name="secret_key" value="<?php echo $this->getSesson()->id() ?>">
    <!– … –>


    контроллер формы
    if ($this->getSession()->id() != $this->getRequest()->post('secret_key')) {
    // форма невалидна
    }
    Спустя 31 сек.
    бгг, парсер ломается на смеси html/php
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 24 октября 2010 г. 12:29, спустя 3 минуты 21 секунду

    код говно. даже парсер ужаснулся
    ιιlllιlllι унц-унц
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 24 октября 2010 г. 12:31, спустя 2 минуты 15 секунд

    что именно гавно?
    Спустя 34 сек.
    нужно просто обновить/поднастроить geshi
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 24 октября 2010 г. 12:39, спустя 8 минут 15 секунд

    токен должен быть уникальным для каждой формы, а не для сессии. а так фактически
    а) не проверяется ничего нового
    б) проебать сесс_ид стало еще проще
    ιιlllιlllι унц-унц
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 24 октября 2010 г. 12:41, спустя 1 минуту 53 секунды

    токен должен быть уникальным для каждой формы

    +1
    проебать сесс_ид стало еще проще

    а зачем в форму сесс_ид подставлять? генерить другой ключик надо каждый раз
    Спустя 26 сек.
    или я что-то не понял?
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 24 октября 2010 г. 12:56, спустя 15 минут 19 секунд

    все верно. ключик должен быть уникальным, он может быть функцией от (сессии + ид формы + время + секрет) или просто рандомным, но тгда его надо где-то сохранять
    ιιlllιlllι унц-унц

Пожалуйста, авторизуйтесь, чтобы написать комментарий!