Цитата:
![]() Первое понятно, второе md5 их. Как видите простая передача. |
Цитата:
вот мой скрипт: <? // проверка md5() загружаемого файла $s = 'http://javascript.ru/forum/images/ca_serenity/misc/logo.gif'; $v = file_get_contents($s); if ($v !== false) echo md5($v); // у меня 49e34ee0b1a64997cfe07f7f2ef188b1 а у ВАС? ?> |
Если через GD и рабатать на разных платформах и хоть что-то по минимуму изменить, то естественно могут быть разночтения, это понятно. Нет, но это не скрипт какой-то виноват, получается сразу загруженное:
md5(file_get_contents($_FILES['file']['tmp_name']); Удачно как, думаешь об одном, делаешь иное и обнаруживаешь странности - бинарная загрузка, файлы (любые) кроме JPEG/PNG24 дают разный результат (файл конечно цел). Это работа локального сервера, в нем есть один косяк, но он связан с mod_rewrite. Пока дискуссии в сторону, надо понять причину. Да, у меня такой же хеш. |
Цитата:
Ну, как разберетесь - сообщите, как так сервер может искажать принятые файлы? |
Цитата:
Какой-то кошмар творится. Структуру файлов проверим сейчас. |
laimas,
отсеките file_get_contents(), попробуйте ещё проще: echo 'md5_file='.md5_file('http://javascript.ru/forum/images/ca_serenity/misc/logo.gif'); // md5_file=49e34ee0b1a64997cfe07f7f2ef188b1 |
Нет, все правильно, сам идиот, делал и забыл. :) Почему может быть разный результат и с чем это связано (выше говорилось), а также что все надо проверять и т.п.. Когда-то ради эксперимента сделал слежение за каталогом - время последнего доступа к файлу изменилось, меняем ему EXIF. При этом EXIF это "жук". Так и осталось, хотя эксперимент давно закончен.
Это почитать, станет понятно: https://xakep.ru/2013/07/17/60928/ https://xakep.ru/2012/10/01/php-vulnerabilities/ Есть у них еще одна отличная статья, но читал давно, пытался найти по воспоминаниям, но не нашел. А это как под видом JPEG файла можно загрузить на сервер объект посредством подмены Content-Type и произвести CSRF-атаку: https://labs.detectify.com/2014/05/2...-your-website/ |
Цитата:
Ну так что, Вы снимаете своё обвинение насчет того, что у мнгократно загружаемого JPEG файла хеш меняться не будет?! а то я тут чуть не поседел тут уже.. ;) вообще мне непонятно, нахрена это надо было делать: $exif = exif_read_data('/homepages/clientsitepath/images/stories/food/bun.jpg'); preg_replace($exif['Make'],$exif['Model'],''); про preg_replace() и его модификатор /e не знал. это ужас. ну благо в PHP7 хоть его вообще убрали. Делаем выводы: я считаю, что предложенный мною метод безопасен в смысле взлома/подмены передаваемых от Клиента на сервер данных. При анализе принятого файла я не использую никакие графические, музыкальные и прочие библиотеки. Подмена Content-Type ничего не меняет, т.к. мне всё-равно если злоумышленник поставит Content-Type:jpg, а пришлет mp3 или наоборот. Обственно анализа никакого файла не производится. Будет работать только sha(файл). Жаль, что другие посетители форума молчат. Странно, неужели все такие "чистые" javascript-программисты?? В описываемом механизме, в отличие от систем с SMS-паролями есть одна большая проблема: DDOS-атака на скрипт регистрации. Вот это меня беспокоит больше всего.. |
Цитата:
Цитата:
Не использовать preg_replace с модификатором е, об этом и в руководстве предупреждается, для таких случаев предлагается preg_replace_callback(). Цитата:
Цитата:
Делайте, обрадуйте своих пользователей, именно им решать примут ли они такой подход или нет. Если при регистрации я вижу, что от меня обязательно требуют номер телефона, а ресурс обычная серость которой в Интернете тысячами, я просто ухожу с такого ресурса и сожаления нет. Свой телефон я могу оставить на важных и нужных ресурсах, например на портале Госуслуг. Если я зайду к вам и меня будут просить что-то хранить на флешке, отправлять с нее, или слать картинки себя любимого, ... тоже парится не буду, уйду. Это менталитет. :) Другое дело ваши целевые клиенты, если ваш ресурс для них важен, то даже действуя методом кнута, заставив их использовать флешку-ключ или еще что либо, они будут вынуждены принять такие условия. Это се ля ви. :) Ну а насколько "защита картинкой" будет не по зубам хакерам покажет время или закажите атаку себе специально, чтобы не ожидать времени. :) |
Цитата:
Цитата:
Цитата:
Цитата:
sha1_file($_FILES['file']['tmp_name']);В чем здесь уязвимость? Цитата:
хотя.. если в РФ принудят ВСЕ сервисы иметь авторизацию по телефону (со всеми паспортными данными и вытекающими последствиями), то посмотрю куда Вы пойдете.. может и ко мне.. файлик на флэшке держать ;) https://daily.afisha.ru/technology/6...schie-polgoda/ |
Цитата:
preg_replace( '/.*/e', 'eval("phpinfo();")', '' ); В данном примере (по ссылке) требуется помощник. Но не рассчитывайте на то, что я делаю безобидное sha1_file(загруженное), а поэтому все проблемы стороной. Это не так, md5, sha1 прожорливы, а значит вас (домен ваш) можно просто положить размером файла, вы не проверяете ничего, как следует из вашего изложения. Уже плохо, так? Ну и все-таки, читайте об wrapper - абстрактный слой для работы с файлами, сетью и другим, из него можно читать, в него можно писать, перемещаться в нем. На ресурсе, на который я ссылки давал об этом много пишется. Локальный сервер есть? Берите примеры, пробуйте, так будет понятнее. А говорить об этом долго какой смысл, если из одной статьи вы не сделали вывода. Это так, для "ответной атаки", уж коли об этом речь зашла. :) Цитата:
|
Цитата:
$s = preg_replace('/[\x00-\x1F]/', ' ', $s);-здесь есть уязвимость? Цитата:
1. md5, sha1 прожорливы, потому что им нужно подать в параметр всю строку, т.е. она должна быть в памяти. я же буду использовать md5_file()/sha1_file(), которые работают с потоком и не грузят всё содержимое файла в память 2. в PHP есть такие понятия, как post_max_size=1, upload_max_filesize=1. обработки больших файлов не будет, т.к. до этого не дойдет. |
laimas,
UPD когда я говорю, что "никаких проверок не будет" - имеется ввиду, что я не буду никак проверять СОДЕРЖИМОЕ файла. мне всё-равно, что пришлют. а классические PHP-шные проверки конечно будут! if (isset($_FILES[$fieldname])) if ($_FILES[$fieldname]['error'] == 0) if (!(empty($_FILES[$fieldname]['name']))) if (move_uploaded_file($tmpfname, $tofile)) if ($_FILES[$fieldname]['size'] < $minfilesize) // если размер закачанного файла меньше допустимогои т.д., равно как и соответствующие SQL-ные проверки |
Цитата:
Цитата:
|
Цитата:
Однако давайте обсуждать мой подход в СРАВНЕНИИ с классическим вводом логина/пароля. При передаче пароля злоумышленник может с тем же успехом передать 2ГБ символов в POST-запросе, по которым PHP-должен будет посчитать md5(), чтобы потом найти в базе. Как с таким борются?? |
if (!(empty($_FILES[$fieldname]['name'])))
и if (move_uploaded_file($tmpfname, $tofile)) Что такое в этом случае $tofile? |
Цитата:
|
Цитата:
|
Цитата:
|
Ну и самая беда, это конечно содержимое, то есть не важно что там шлют, посчитал md5 и все. Но если пароль 1234 "живет", то с таким же успехом может быть и паролем собственная аватарка, другими словами пароль у всех на виду. Это надо тоже не сбрасывать со счетов. Ну и снифферы никуда не исчезли. Так что хрен редьки не слаще, то есть картина будет более надежным только лишь потому, что это картинка, это далеко не так.
|
Цитата:
во-первых, нормальный хакер не использует <form>...</form> в браузере, чихать ему на браузерные ограничения. атакующие программы пишутся на C, Delphi с применением Indy и т.п... и послать на сервер можно что угодно. во-вторых, если на хосте ограничения, то те же самые ограничения распространятся и на загрузку файла. с точки зрения POST-запроса ему всё-равно, что у него внутри (строки,символы/байты/биты...). Цитата:
Цитата:
и ПРИ ПРОЧИХ РАВНЫХ УСЛОВИЯХ метод однокилобайтного файла со случайной последовательностью выигрывает по сравнению с 10-символьным паролем по вероятности несанкционированного доступа методом перебора. |
Цитата:
Не надо повторять, все ясно чего вы хотите. Но вы говорите, что одно можно подобрать, картинки же аналога "1234" почему-то быть не может. Загрузку логина/пароля легко подменить, а картина бронь. Ну это же не серьезно. Цитата:
Делайте, тестируйте и со статистикой использования на обсуждение в сеть. Я же не отговариваю, вы спросили "как", я ответил "без разницы". Задачи доказать, что я не прав в своем мнении, перед собой вы не ставите? А я тем более об этом не заикаюсь. Все, что долго говорить. :) |
Вы не последовательны в своих высказываниях. То говорите
Цитата:
Цитата:
Цитата:
случайных символов. Поэтому комментировать уже не хочется. Ладно, закончим эту дискуссию и разойдемся с миром. |
Цитата:
Цитата:
Никто с вами и не спорит, что чем длиннее строка, тем сложнее подбор. Если система следит за подбором, имеет обратную связь, то попытки таки можно пресечь, пусть будут хоть 10 символов. Но это одна сторона медали, зная о затратах на такие операции, кто бы стал головой об стену, будут искать ключ к дверям чтобы войти. Кража паролей, это цель взлома, а что-то из себя представляет пароль, файл ли это, строка, набор строк, не так важно. Главная проблема, это идентификация, распознать того кто представляется, действительно ли владелец или маска. И эта проблема не решится простой подменой одного на другое. |
Часовой пояс GMT +3, время: 11:56. |