За последние 24 часа нас посетили 17628 программистов и 1722 робота. Сейчас ищут 1889 программистов ...

Как правильно валидировать формы?

Тема в разделе "PHP для новичков", создана пользователем Titos, 18 янв 2018.

Метки:
  1. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Я про кодировки а не хэш-функции, а это мутная тема, это же не просто отдельные буковки а набор байтов. Даже одинаковый тест с одной и той-же кодировкой побайтово может отличатся.
    --- Добавлено ---
    Уязвимость как бы в том что ты не получишь свое бабло если байты твоего пароля будут отличаться, а с русской кодировкой это легко :)
     
  2. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Каким образом? Каким образом один текст с одной и той же кодировкой может побайтово отличаться?
    С какой "русской кодировкой"? Что это за термин такой?

    Кириллица в той же UTF-8 отличается тем, что хранится многобайтово, да. Но таблица символов при этом едина. То есть многобайтовое представление любой буквы однозначно. Всегда. Иначе бы киррилические тексты не отображались корректно. Кодировка - это лишь надстройка, которая указывает, как правильно превратить поток байт в из белого шума в читабельный текст. Это более высокоуровневая штука, имеющая смысл только тогда, когда алгоритму не плевать на символы. При этом хэш функция, которой мы передаем строку, проводит операцию не над семантическим значением строки с учетом мультибайтовости, а над последовательностью байт, ее составляющей. И совершенно неважно, что ты передал. Вообще не важно. В БД, в конечном случае, идет хэш. Который, по умолчанию, безвреден. При этом наличие спецсимволов в пароле резко херит его словарность и на порядки усложняет брутфорс, из-за чего спецсимволы зачастую вообще не включают в алфавит, по которому делается подбор.

    Окей, ты новичок и тебе можно простить невежество (но тысячу отдай), но работникам Сбера - нет.

    YM: 410014509458033
     
    #27 Fell-x27, 20 янв 2018
    Последнее редактирование: 20 янв 2018
  3. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    UTF-16 бывает двух видов: UTF-16BE и UTF-16LE (big-endian / little-endian). В них разный порядок байт. UTF8 может быть win, muc, linux формата, например сохранил тест в MS блокноте затем перекодировал формат (не кодировку) в ноутпаде в linux, текст не изменился и в Ворде нормально открывается, но если открываешь в блокноте - текст сбился в кучу. И еще могут быть нюансы. Так-что в сбере наверное не такие уж дураки :)
    Я думаю тыща все-же с тебя.
     
  4. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Вот именно функции не важно какой набор байтов ты ей передал и БД вреда нет, но с кириллицей может быть чехарда, текст из одной программы в одной кодировке может быть сохранен в другой кодировке и с байтами твоего пароля может возникнуть путаница.
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    интересно... если у меня пхп в кодировке utf8 и место всяких (( ?;:№%№% в UTF-16LE )) приходят в x73/x81
     
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Это разные символы перевода строки в Windows (2 символа) и Linux (1 символ), и к паролю не имеет никакого отношения, как и к кодировке, кстати.
     
  7. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @mkramer неа. 72/16 это вообще аксишный символ. Тут прям таки живым примером показывается как работают мультибайтные строки и бом.
    --- Добавлено ---
    @mkramer, сорян, показалось что ты мышке отвечаешь.
     
  8. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Информация от IBM:
    Кириллица:
     
  9. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    @keren, ты ищешь проблемы там, где её нету. Пароль, который вводится в форму на сайте/в интерфейсе программы всегда будет в одной и той же кодировке. А если она может поменяться вдруг, у прогера руки растут из жопы.
    --- Добавлено ---
    И вообще, сейчас использовать что-то, кроме utf-кодировок - преступление против здравого смысла.
    --- Добавлено ---
    и причём тут вообще ключи шифрования?
     
    askanim, Fell-x27 и MouseZver нравится это.
  10. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Кодировка пароля может поменяться у клиента а не у прогера.
    У нас много чего против здравого смысла, постоянно возникают темы с кодировками, не укажешь где-либо вылазят кракозябры, американцам об этом думать не надо.
     
  11. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Каким образом? Браузер посылает тебе форму в той кодировке, в которой ты прислал ему страницу. Иначе мы бы вообще не могли работать с русскими буквами.
    Это другое. Надо указывать.
     
  12. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Какому браузеру какую страницу?
    Сервер на запрос присылает мне в браузер форму utf8, текст пароля созданный в utf16 отдается как utf8 а потом может быть проблема с доступом если вводить в utf8.
    Это оно и есть. Не все всегда как надо. А сбербанк и другие избавляют от этих проблем.
     
  13. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Кому и кем текст пароля отдаётся? Я-то, наивный, полагал, что его пользователь вводит в строку браузера. Если бы то, что мы бы вообще не могли тексты на русском языке принимать с сайта. Ты бы не смог читать сейчас, к примеру, это сообщение. А раз можешь, значит браузер автоматом отправил этот текст в той же кодировке, в которой сервер ему прислал страницу.
     
  14. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Ага. С двухфакторкой, подтверждением входа с телефона, оповещением о входе и прочей ерундой. Но для посетителя - это всё же лучше, чем помнить пароли к сотне сайтов и лучше, чем делать для них один типовой пароль. Да и для сайта - переложил всё это на гугл и спи спокойно ) Конечно, если ты Сбербанк, то такая тема не прокатит, их вон недавно за гугл-аналитику ругали ибо безопасность, но это всё скорее исключения из правил.

    Ну или так, главное что бы не и логин и пароль и по началу не понято, что в итоге будет идентификатором для входа.
     
  15. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Это зависит от кодировки, utf кодировки похожи, вот слово "текст" я создал в utf8 сохранил как utf16 и скопировал сюда, видно же?
     
  16. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
  17. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    не знаю мне видно.
     
  18. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Клиент - официальное приложение Сбера. Это раз.
    Два - если даже речь идет о браузере, то если разраб не рукожопый жопорук, или не новичок, впервые IDE открывший, у него не будет проблем с кодировкой. Никогда. То, что ты привел как пример, что "кодировок бывает несколько" - вообще тут не при чем. Хоть миллион их может быть. Если они не могут на клиенте и сервере кодировку правильно выставить, то на мороз выкинуть всех до последнего надо.
    А теперь три - сбер агрится не только на кириллицу/иероглифы, но и тупо на спецсимволы. Однобайтовые. Спецсимволы. Это ты как объяснять будешь?

    И повторяю - приведи мне пример с уязвимостью, эксплуатирующей многобайтовость, при условии, что передаваемые данные пойдут под хэш. Фраза "если ты сменишь кодировку на клиенте, отошлешь пароль, а потом будешь в нормальной кодировке его пытаться набрать" не принимается, потому что это чушь и вообще никоим образом не относится к делу, и является проблемой пользователя, которую он сам себе делает намеренно. И решается она восстановлением пароля. Я жду описание уязвимости.
     
  19. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    А вот при чем. Не могут предугадать возникновение несоответствий с миллионами кодировок. В сбере невежды глупее тебя, в IBM тоже всех на мороз надо выставить?
    что за слово "агрится", и почему я должен объяснять? Я говорю про проблемы с кириллицей.
    Я объяснял дело не в эксплуатации уязвимости, а с чехардой кодировок.
     
  20. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Сбер, в моем случае, ругался на наличие спецсимволов в пароле. Однобайтовых спецсимволов. Давай, адвокат дьявола, расскажи причину.

    С какими миллионами? Какое несоответствие?Откуда оно возьмется? Как запрет символов вообще связан с несоответствием между кодировками? Та же латиница в win1251 и utf8 кодируется уже по разному. И как в данном случае будет работать твоя логика?
    --- Добавлено ---
    Запросто. Почему они должны быть умнее меня по умолчанию? И при чем тут я? Ты начал заливать про безопасность. А я говорю, что они, своими правилами, безопасность моего аккаунта снижают. Внятного ответа, кроме "ну потому что кодировка", от тебя пока не последовало. Это полная чушь. Но, коль уж ты взялся отмазываться за них, иди до конца. Или перестань пороть горячую и начни думать головой.
     
  21. Mitai

    Mitai Новичок

    С нами с:
    23 окт 2016
    Сообщения:
    155
    Симпатии:
    24
    я правильно понял, что наличие спецсимволов в пароле, это больше плюс, нежели минус? и если это плюс, то по какой причине на большинстве ресурсов их нельзя использовать в пароле?
     
  22. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    это никак не повлияет на читабельность данных по байтно.
    https://ru.wikipedia.org/wiki/UTF-8
     
  23. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Это огромный плюс. Это огромное расширение брут-алфавита. Это потеря словарности и нож в ребра радужным таблицам. На куче сайтов, связанных с баблом, вообще, порой, требут, чтобы в пароле были спецсимволы.
    Не на большинстве. На меньшинстве, на самом деле. На большистве люто заруливают правилами логины, что тоже дичь. И причина та же, по которой новички любят эти вот ограничения для паролей лепить - а просто так. Ведь все лепят ограничения. А чем я хуже? Я нимужик чтоле? Я не хозяин чтоле? Ща я тут пользователю накручу ежовых руковиц, пусть задрачивается! Пусть поймут, у кого тут член! Пусть у меня сайт выглядит, как будто у меня сбер! Кроме шуток. Просто "потому что надо", "потому что все так делают". Без включения логики.

    Серьезно, сколько я не спрашивал у людей, нахрена они ограничивают пароль по символам, ни разу не получил внятного ответа. Ни. Единого. Раза. Вообще. Никогда. Люди задумывались об этом только после того, как я у них это спрашивал. Но люди упорно ограничивают словарь пароля. В редчайших случаях, начинается этот вот бред про "опасные символы". Люди понятия не имеют, что делают, заменяя знания догадками и безосновательными выводами. Но делают.

    Я вот, в отличие от keren, прекрасно понимаю, о чем говорю, как работает то, о чем я говорю. Я знаю и про "опасные символы", и про то, как через мультибайт загнать на сервер SQL-инъекцию второго порядка, которая легко обойдет эскейпинг. Знаю я и как этого избежать и не бояться никогда.

    Ты не представляешь, сколько я видел некоторого дерьма. И ты не представляешь, какая у меня из-за этого паранойя, когда очередной сайт просит меня зарегаться, шантажируя нехваткой функционала.

    А насчет Сбера...имхо - унижение клиента это просто часть корпоративной этики. И оно начинается прямо со входа в их электронный банкинг.
     
    #48 Fell-x27, 21 янв 2018
    Последнее редактирование: 21 янв 2018
  24. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    На то они и спецсимволы, я тебя должен просвещать?
    Это не правда.
    И это ключевой момент универсальности.

    Я про безопасность не заливал, я говорил про проблемы использования разных многобайтовых кодировок. И они страхуются от них.
    А как сильно они нарушают твою безопасность? Англоязычный мир обходится стандартными ascii символами, а тебе их мало.
     
  25. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    На несколько порядков.
    У меня в пароле тоже не катакана зашита была.
    Да, просвяти, как в твою кодировочную мультибайтовую теорию безопасности вписывается запрет однобайтовых некиррилических символов? Сразу предотвращу твою полемику возможную - речь идет о символах, находящихся на клавиатуре и не являющихся экзотикой.

    Серьезно, если для тебя признание своей неправоты сродни личному оскорблению и ты готов начинать нести бред и переходить на личности, лишь бы не признавать, что ты не прав, это очень грустно. Выключай это вот не отыгравшее детское видение мира, сколько бы тебе ни было лет. В реальном мире не гнобят за признание неправоты. В реальном мире смеются над непризнанием очевидных вещей.
    --- Добавлено ---
    Я тя умоляю.
    Вот те, к примеру, родная кодировка латиницы на винде. А вот на маке. Универсальность, блин:)

    Хватит уже нести бред. Нет никакого ключевого момента универсальности. Есть пересечения символов. Не всегда адекватные, к слову.