За последние 24 часа нас посетили 38034 программиста и 1811 роботов. Сейчас ищут 826 программистов ...

Как php делает сериалайз переменных сессии?

Тема в разделе "Прочие вопросы по PHP", создана пользователем Danilka, 11 фев 2008.

  1. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Захотел тут напрямую записать в перемнную сессии строку, полученну.ю непосредственно от юзера.
    Так вот вопрос. Как php преобразует массив сессии во время смены страниц. Ну к примеру, если они хранятся в виде строки key=value&key2=value2, то если юзер сунет в строку что-нибудь типо &my_key=my_value, то при ближайшей перезагрузке странички эти данные запихнуться в переменную сессии.
    Объясните пожалуйста, кто знает.
     
  2. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Понял ничего ©
     
  3. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. $_SESSION = array(
    2.     'string' => 'Sergey'
    3.     'array' => array(1, 2, 3)
    4. );
    Будет сохранено в виде:
    Код (Text):
    1. string|s:6:"Sergey";array|a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}
    Нарушить такую структуру "левыми" данными невозможно.
     
  4. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Ага, спасибо за описалово.
    Значит можно смело совать строку в переменную, без фильтрации?
     
  5. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Только substr сделать.
     
  6. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Danilka
    Да, можно. Только лучше не пихать слишком большие данные - проверять на длинну как советует Sergey89. Если надо сохранить что-то большое, то лучше создать временный фаил, записать в него и путь к фаилу сохранить в сессии юзаера (ну и организовать переодическую чистку этих фаилов, что-бы не скапливались)
     
  7. Danilka

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

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Да нет, всё ок. Я собирался туда сунуть код активации юзера, пришедший по почте.
    Структура немного не удобная получилась и нужнго, чтобы этот код не висел в адресной строке. Вот я и подумал его сразу в сессию сунуть. Соответственно и возник вопрос, а не получит ли юзер таким образом доступ к созданию или изменению переменных сессии. А раз не получит, то всё ок, так и сделаю.
    Что касается длины, то код всегда будет фиксированный, значит переживать не стоит.
    В любом случае, спасибо за консультацию.
     
  8. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Исчо раз, для тех, кто в танке - ВСЁ, что приходит от юзера - НАДО считать потенциально опасным и соответственно обрабатывать. Кто помешает этому юзеру скопировать твою активационную ссылку из письма, добавить xxs-код и вставить в браузер?
     
  9. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Механизм функции serialize помешает !!!
    (проверять надо то что не проверяется автоматически, а ограничивать вообще ничего не надо, данные от пользователя либо должны придти не тронутыми, либо они не придут сами)

    А XSS и SQL нужны только при выводе этих данных в браузер/базу непосредственно !!!


    Пример:
    - Я пришёл домой одел тапочки
    - Я пошёл на улицу одел ботинки

    В обоих случаях я это всё равно я, и не нужно мне голову отрубать и пришивать когда я иду гулять

    Перестаньте уже путать, не данные от пользователя опасны, опасно то куда и в каком виде вы их пошлёте !!!

    PS так и не ясно что именно имел в виду ТС сессии или serialize но в обоих случаях юзер ничего подделать не сможет, другое дело если бы это были COOKIE или GET, но и в том случае их трогать нельзя, с ними надо работать и работать в соответсвии с логикой скрипта, а не в соответствии со стереотипами которые вам навязывают идиоты.