За последние 24 часа нас посетили 20185 программистов и 1084 робота. Сейчас ищут 849 программистов ...

Фильтрация данных, полученных от пользователя

Тема в разделе "Прочие вопросы по PHP", создана пользователем marazmatik, 23 дек 2011.

  1. karlozzz

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

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Сделай, займет пару миллисекунд и не навредит =)
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    marazmatik
    Ты тупой и поришь фиг-ню =) в пхп для таких случаев есть хтмлспешалчарс и хтмлэнтитис
    Удачи
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    В аське с некотрых пор и мыльники канают. Новые юзеры часто даже не знают своего номера.
     
  4. Михаил

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

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    хватит
     
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Я плохо знаю регулярки но на всяк случай: там $ в конце поставить не надо ли? Для верности.
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Если регулярка написана правильно - то чисто с точки зрения безопасности - хватит. Просто у тебя обе регулярки (что в первом, что в предыдущем комментарии) - с косячками :) Аккуратней составляй их, тестируй как следует - и нормально, будет достаточно регулярки.

    Чисто на всякий случай, для большего личного спокойствия - можно добавить mysql_real_escape_string() или приведение к int, например.
     
  7. marazmatik

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

    С нами с:
    16 дек 2011
    Сообщения:
    20
    Симпатии:
    0
    Да ты уже показал интеллект, иди дальше косички на мудях плети.
    Если ты в регулярках плохо шаришь, какого чёрта ты тут отписываешься, или у тебя мания трольская, набивать количество сообщений?
     
  8. marazmatik

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

    С нами с:
    16 дек 2011
    Сообщения:
    20
    Симпатии:
    0
    Вот есть люди =) которые по делу постятся на форуме.
    Я конечно проверяю, и для верности, написал функцию, где чистятся тэги, и экранируются скобки, и другая вредоносная ересь.
    --------------------------------------------------
    Укажи пожалуйста косяки =) в последнем не хватает конца строки, или ещё чего то? А что с первой /^[\d]+$/D знаю что если не указать модификатор D можно вставить символ переноса строки \n то есть такой запрос пройдет index.php?act=1464%0a
    -----------------
    В общем хочеться услышать твой ответ. :roll:
     
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    marazmatik
    ты просто слишком туп чтобы понять о чем я говорю =)
     
  10. marazmatik

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

    С нами с:
    16 дек 2011
    Сообщения:
    20
    Симпатии:
    0
    Слушай, не занимайся ерундой, зачем ты тут пишешь?
    Мне хватило твоего первого сообщения, о доверии к пользователям, что тот кто захочет заполнит верно номер icq

    Но ведь вопрос был не в этом, да и icq просто проверка, это так второстепенное поле, личная информация пользователям.
    Зачем применять при выводе htmlspecialchars() если можно записать нормально, без лишних символов если это тот же icq то целые числа (Integer), если это логин то латинские буквы и цифры определенной длинны а не 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    А если ты формой передаешь id к примеру поста, да тут можно применить mysql_real_escape_string() чтобы не вышло sql инъекции, но почему не проверить регуляркой, и вывести сообщение с ошибкой? Нормальный пользователь не будет туда лезть, но расчет не только на нормальных пользователей.
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Где я говорил о доверии, курица слепая? =) я сказал, что если с этим полем не будет работать робот, то в таких случаях требовать труЪ валидности данных не имеет большого смысла. А для защиты БД достаточно эскейпа. Про вывод вобще не было разговора.

    А почему ты считаешь что в логине должны быть сугубо латинские символы вобще не ясно. На дворе век utf. На рутрекере всегда норм пахали русские логины и никогда никого это не напрягало.

    Больше похоже что ты застрял в своих подходах в прошлом десятилетии. Просыпайся давай.
     
  12. karlozzz

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

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Ну насчет логина из любых утф8 - вопрос спорный, если 0 и o еще можно отличить то есть символы в утф полностью идентичные, да и другие косяки повалятся
     
  13. karlozzz

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

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    +управляющие символы =)
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Да-да. Только на практике проблем нет.
     
  15. karlozzz

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

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    На какой практике? Где такое реализовано? Сомневаюсь что на рутрекере все символы а не только a-Zа-Я
     
  16. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Но, в принципе-то, ничего не мешает использовать любые символы в качетстве логина... Как хочется пользователю - так пущай и называет себя, кому какое дело? Нравится ему комбинация каких-то непонятных символов - ну и пусть, что тут такого... А так-то всё как обычно - эскейпим перед отправкой в б.д., htmlspecialchars перед выводом в html.
     
  17. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    marazmatik
    Ну, в первой - я уже писал, у тебя она пропускает любое кол-во цифр. Взломать-то не взломают, но при вставке данных на 5-м MySQL запрос обломается (хотя, не уверен, может там от настроек зависит). Скрипт будет думать, что аська правильная, отправит пользователю письмо, что тот успешно зарегился, а на самом деле его в списке пользователей нет. В общем, нарушение работы скрипта.

    Во второй - да, не указан признак конца строки. В результате регулярка будет просто проверять, начинается ли логин с не менее четырёх символов из набора [a-z0-9], но ей будет пофиг, что там идёт за ними.
     
  18. karlozzz

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

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    sobachnik
    Свободу нельзя давать, надо чтобы логины у всех были визуально различны, да и для других не было двух пользователей "по 4 квардратика", но вот если прокрадутся управляющие символы, тогда пиши пропало =))
     
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Вот блин чего вы себе воображаете? Кто вы блин такие чтобы ограничивать людей и объяснять как им жить. =)

    Хорошо что кроме таких как ты есть те, кто придумывает вещи типа utf и прочего.

    Нет никаких объективных причин для ограничения символов в логине. Никаких.
     
  20. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Ну кроме фетишизма разработчика (не то чтоб объективная, но вполне себе причина)

    [​IMG]

    [​IMG][​IMG][​IMG]
     
  21. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    А у нас в паре проектиков было в ТЗ указано, что поле пароль ДОЛЖНО содержать хотя бы одну букву, хотя бы одну цифру и хотя бы один символ не являющийся ни буквой ни цифрой :) При этом общей длиной пароль должен быть не короче 6 символов.

    Но с паролем-то вообще пофиг - он нигде не выводится и в базе хэш солёный хранится...
     
  22. marazmatik

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

    С нами с:
    16 дек 2011
    Сообщения:
    20
    Симпатии:
    0
    Ты тупой петух, и твоё место на параше...
    Все данные полученные от пользователя нужно проверять, и форматировать, чтобы потом не ломать голову ШО-же не так, указывать человеку где он совершил ошибку, без перезагрузки страницы, а не выводить одну месагу на всё. die('Ууу ошибка')
    Век WEB2 а твои куриные подходы. Заебал ей богу, свою дрочь нести про ютф никто не спорит, хоть на украинском пусть вводят логин. Но для каждого проекта свой функционал своё техническое задание (ТЗ) Петух ты не доношенный...
     
  23. marazmatik

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

    С нами с:
    16 дек 2011
    Сообщения:
    20
    Симпатии:
    0
    =) Всё верно говорите товарищ. Но я где-то ниже уточнил что там не хватает ограничения символов что то тип {3,9}
    Иначе выйдет ошибка что то типа: Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean

    Ну и в последнем тоже, верно подмечено не хватает знака, конца строки. Но там же чёрным выделено было Это всего лишь пример на скорую руку.

    В общем спасибо за ответ.
     
  24. karlozzz

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

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    блин, читайте не между строк, я гворю, что нельзя все символы разрешать, а четко их ограничивать, хотя бы той же регуяркой, а то иначе вставит пользователь символ, что след текст идет справо налево и будет каша у вас
     
  25. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    igordata
    Кстати да, как DTS купила ICQ, в логине теперь может быть e-mail, при чем хоть кириллица, хоть иероглифы. Поэтому пора забыть про регулярки для мыла. Вместо этого кодировать его в пуникод, проверять на валидность, и в базу записывать в исходном виде.