За последние 24 часа нас посетили 22599 программистов и 1586 роботов. Сейчас ищут 936 программистов ...

Сессии это кроссбраузерно?)

Тема в разделе "PHP для новичков", создана пользователем Freakmeister, 11 окт 2014.

  1. Freakmeister

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

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Пилю форму, которая разбита на 5 секций. Эти секции подгружаются в форму аджаксом поочередно - юзер жмет "дальше", данные с текущей секции уходят на сервер, загружается следующая секция, текущая удаляется. Встал вопрос - где хранить данные пройденных секций? Я конечно могу сделать на странице какой-нибудь невидимый блок и писать туда сериалайзы данных JS-ом, но это как-то не безопасно. Что скажете по поводу хранения в сессии? Я никогда их особо не юзал. На телефонах такое будет работать вообще?
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Мобильные браузеры тоже используют куки, поэтому будет конечно. Сами данные сессии хранятся на сервере, в куках - идентификатор сессии
     
  3. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    А причем тут безопасность
     
  4. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Почитай про механизм сессии, поймешь, что сессии для клиента - это просто кука с айдишником. Не более того.
     
  5. Freakmeister

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

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Ну, не хотелось бы, чтобы строка, которая потом будет уходить в $_POST, редактировалась как угодно на клиенте через HTML-инспектор. Будут пытаться всякие невозможные значения отправить, которых нет в форме. Проверка значений на валидность на стороне сервера есть конечно, но дыры это дело такое, никто их не пишет специально - могу и не отвалидировать что-нибудь по невнимательности.

    Добавлено спустя 4 минуты 7 секунд:
    Короче, как я понял, сессия это надежно и вроде бы кроссбраузерно. Можно хранить там данные, пока браузер не закрыт.

    Добавлено спустя 7 минут 35 секунд:
    У массива $_SESSION ведь размер не ограничен? Могу я делать тупо так на каждом шаге?
    Код (PHP):
    1. $step++; // я утрирую
    2. $_SESSION["myform_$step"] = $_POST; 
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    заняться тебе нечем, фильтровать что-то на клиенте =)
     
  7. Freakmeister

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

    С нами с:
    20 дек 2009
    Сообщения:
    888
    Симпатии:
    5
    Эта форма для незарегенных клиентов, так что выбор небольшой.)
     
  8. Ke1eth

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

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    Основная валидация только на сервере.
    Ибо кто тебе обещает, что запрос ты получишь исключительно с формы на страничке?
     
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Если ты на сервере защищаешься то не все ли тебе равно.
     
  10. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Дык сядь, подумай. Создай набор проверочных строк, заведомо опасных.
    Проверки на стороне клиента должны быть ДЛЯ клиента. Помогающими ему. Типа "ой, такие символы нельзя в нике юзать", "ой, вы не ввели то-то", "ой, вы ввели херню". Сервер они НИКАК не обезопасят. Если из миллиона найдется один, кто банально отключит JS, чтобы твоя проверялка сдохла, или состряпает запрос для бомбежки из консоли, тебе этого хватит, чтобы окуклиться. Один из миллиона и ты угоришь.

    Для безопасности надо проверять данные уже на сервере. Для залатывания дыр веди проверку не на наличие всех недопустимых знаков, а на наличие чего-то кроме допустимых. Белые списки всегда надежнее черных.