Два порядка к бесконечности достаточно там разных символов, это-же не админка сайта которую бутфорсят боты. Так что "невежественный" cбербанк не уязвимее я думаю в этом смысле западных банков.
Ок, конкретно этот пример был неудачный. У этих кодировок есть пересечение по латинице. Но ситуацию не меняет никак. Все еще не вижу описания уязвимости. Все еще не вижу причин, почему нельзя передавать что-то окромя цифр и латинских букв в хэш-функции. Вижу какое-то размусоливание, сводящееся к "сиди помалкивай, там поумнее тебя сидять!". И никакой аргументации. Вообще. Хотя с моей стороны ее вагон был. Непорядок. --- Добавлено --- Угум, чую, скоро начну выдавать страйки.
Первый демагогический страйк. Все еще не вижу описания уязвимости. Все еще не вижу причин, почему нельзя передавать что-то окромя цифр и латинских букв в хэш-функции.
Пароли ж банкоматом выдавались / меняли, а эта тема пропитана легаси и правилами чуть более, чем полностью. Вполне возможно, что ограничения на пароль ввели для сохранения совместимости с какой-нибудь древней хренотенью. --- Добавлено --- Да, чуть не забыл. @keren ты не прав.
Вполне возможно, да. Но, знаешь чего я боюсь больше? Что это как-то связано, до кучи, с тем, что они, возможно, вообще не хэшируют ничерта, а первоначально эти ограничения в древней хренотени были связаны с кривостью того, кто проектировал хранилище и, вместо грамотного эскейпинга и единства кодировок, решил просто запретить спецсимволы и мультибайты. Потому что даже древней md5 плевать на входной поток... Зная, из источников, так сказать, какой бардак в сбере творится в этом плане, и что у них критические части системы могут отдаваться аутсорсерам, после чего на банкоматах можно в косынку играть, если исхитриться, я ничему не удивлюсь.
А IBM в твоей цитате говорит о ключе шифрования, а мы говорим тут о пароле - хешанул, кинул в базу и забыл о нём. Если кто-то ухитрится прислать нам его не в той кодировке, хеш не совпадёт, мы его пошлём на три буквы, а наша база как стояла, так будет стоять. А если он к нам захочет вернуться, ок, воспользуется формой "восстановить пароль".
Господи, что ты несешь... При чем тут это? У тебя сервер кириллицу принимать отказывается? Хэши не считаются? Переставай рассуждать о том, что не понимаешь. Переставай. Плохая привычка. P.S. Все еще жду тысячу.
Вот пожалуйста Есть подозрение, что password_hash ничего не знает о иероглифах и прочих многобайтных символах. Если это так, то строка перед хэшированием будет обрезана до 72 байт. В то же время maxlength в браузере ограничивает именно длину в символах. Значит, мы не знаем, как ограничить длину пароля на стороне клиента, если используем эту опцию и хотим позволить пароли максимальной возможной длины.
Я тебе кажется объяснил в чем проблема, на латинице "text" универсален, а по русски "текст" это полдюжины вариантов с разным количеством байтов и способов кодирования, php взаимодействует с разными программами, сервисами у которых свои алгоритмы, и могут возникнуть проблемы тем более если это касается важных данных. А нес ты про нарушения сбербанком твоей безопасности, про разное кодирование латиницы. Так что я жду тысячу
Так же к гуглу посылать не буду, а вот свежая тема с проблемами кодировки: https://php.ru/forum/threads/problemy-s-kodirovkoj-formy-i-vstavkoj-v-bd.68559/#post-554221
Ну проблема я думаю там создается функцией mysql_set_charset("utf8"); Которая не перекодирует, а лишь сообщает базе кодировку данных, а кодировка данных другая и она их ломает.
Я уже приводил пруф, что это не так. Нет никакого критерия универсальности. Ты ухватился за частный случай и страдаешь от "ошибки выжившего". Я тебе приводил официальную кодировку винды и мака, и там латиница не пересекается, к примеру. И не пересечение кодировок более распространено, увы. Хорошо, что умные люди придумали кодировки и позаботились о том, чтобы "разные программы", принимая данные извне, могли получать указания, как эти данные интерпретировать. Да, сбербанк ослабляет мой пароль, не пропуская спецсимволы. Повторяю спецсимволы. Спец. Символы. С.П.Е.Ц.С.И.М.В.О.Л.Ы. Это такие закорючки, ну типа там запятые, точки, тире всякие, плюсыминусы, скобочки и прочие однобайтовые символы, появившиеся в кодировках задолго до кириллицы. Я понимаю, что это сложно. По этому разжую очень очень подробно. Однобайтовые символы - это такие символы, которые занимают один байт. Символы, занимающие один байт никак не могут создать проблемы, связанные с многобайтовыми строками. Потому что проблемы, связанные с многобайтовыми строками актуальны только для многобайтовых символов. А многобайтовые символы - это символы, состоящие более, чем из одного байта. Так как однобайтовые символы состоят из одного байта, они не являются многобайтовыми. Я уже не знаю, как еще тебе объяснить, что ты говоришь чушь, которая никак не относится к делу Разрабы в курсе этой беды блоуфиша, по этому щас в моде новый алгоритм - Argon2, не страдающий этой херней.