Перейти к публикации

Разные md5 хеши файла при локальном и удалённом хосте


Рекомендованные сообщения

@celsoft
Заметил особенность, что хеши не совпадают, если файл залит на удалённый хост.

$size = DLEFiles::Size( $this->upload_path . FOLDER_PREFIX . $uploaded_filename );

if ( $driver AND !DLEFiles::$remote_error ) {
	$http_url = $config['remote_url'];
	$md5 = md5( $size );
} else {
	$http_url = $config['http_home_url'] . "uploads/";
	$md5 = md5_file( ROOT_DIR . "/uploads/" . $this->upload_path. FOLDER_PREFIX . $uploaded_filename );
	$driver = 0;
}

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

Изменено пользователем UnitDev
Ссылка на сообщение
Поделиться на других сайтах
  • UnitDev изменил заголовок на Разные md5 хеши файла при локальном и удалённом хосте
15 часов назад, UnitDev сказал:

Этот баг так и был задуман?

Так задумано.

15 часов назад, UnitDev сказал:

Можно же нормально посчитать хэш файла пока файл находится на хосте сайта

Нельзя, точнее не всегда возможно, при ряде настроек хостингов, которые часто встречаются, это не получится. А также не всегда файл при загрузке попадает на хост, например при загрузке с внешнего URL, на хост с DLE он даже не попадает.

15 часов назад, UnitDev сказал:

получается введение в заблуждение тех, кто их сверяет.

Нужно просто уведомлять тех кто сверяет, по какому алгоритму нужно сверять.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, celsoft сказал:

Нужно просто уведомлять тех кто сверяет, по какому алгоритму нужно сверять.

С каких пор у md5 вариации начались?
md5 файла это не то же самое что md5 от размера файла.

Пока файл собирается из чанков в /uploads/files/, когда он дособран, его можно посчитать там, хотя правильнее всего было бы посчитать уже после загрузки на удалённый хост, но для этого его нужно либо выгружать обратно для подсчёта, либо на стороне удалённого хоста уже разместить служебный php файл, но так как сделано сейчас, это именно баг, потому что никакого md5 файла не подсчитывается, и он может быть таким же битым, и иметь такой же размер, тем более что при отправки и разбиение на чанки, не производится высчитывание хеша файла на стороне клиента, и последующей  сверкой на стороне сервера.

Ссылка на сообщение
Поделиться на других сайтах
59 минут назад, UnitDev сказал:

С каких пор у md5 вариации начались?

А кто сказал что это что выводимый хеш шаблонным тегом DLE это MD5 именно содержимого файла? DLE об этом нигде не обьявляет, кроме того что вы эту функцию увидели в файле.

59 минут назад, UnitDev сказал:

Пока файл собирается из чанков в /uploads/files/, когда он дособран, его можно посчитать там, хотя правильнее всего было бы посчитать уже после загрузки на удалённый хост, но для этого его нужно либо выгружать обратно для подсчёта

Он по вашему всегда собирается? Нет не всегда. Во первых он собирается только если файл превышает лимит при котором разбивать. Во вторых не при всякой загрузке он вообще поступает на локальный сервер. Я выше уже об этом написал. Поэтому чтобы алгоритм подсчета был всегда одинаковый применяется именно такой тип, а не для одного файла один, для другого другой и т.д. Поэтому привязка по хранилищу идет, которое не меняется от случая к случаю. А загрузка файлов может быть очень разной и зависит от разных ситуаций и случаев.

Что то выгружать обратно с удаленного сервера это тоже глупая затея, потому что займет очень много времени для больших файлов, потратит много ресурсов сервера, плюс удаленные хранилища зачастую имеют тарификацию на скачивание, это значит еще и заплатить деньги за подсчет. Я понимаю что это может быть и нормальным для вас и у вас нет такой тарификации, но нам нужно думать о всех пользователях DLE, 99 процентам из который вообще плевать какой там хеш файла, они это не используют у себя. А нам нужно искать компромиссы между всеми пользователями. Это нужно понимать когда вы пользуетесь коробочной CMS.

59 минут назад, UnitDev сказал:

либо на стороне удалённого хоста уже разместить служебный php файл

Полная ерунда. Попробуйте выполнять PHP файл на S3 хранилище. Я посмотрю как это у вас получится.

59 минут назад, UnitDev сказал:

но так как сделано сейчас, это именно баг

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

Если вам не нравится как работает DLE с внешними хранилищами, ваши хранилища выполняют PHP коды или все ваши файлы именно разбиваются и собираются, и по URL не загружаются. То вы можете написать для себя свой плагин и изменить эту строчку и посчитать md5 содержимого файла, но это ваш выбор и ваш частный случай, он не применим ко всем сайтам. Не все же сайты работают так как ваш сайт, не все делают только то что делаете вы, и загружают файлы так как вы, и используют такие же хранилища как и вы.

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

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...