Сведения о вопросе

Pytdev

13:31, 1st October, 2020

Теги

Что использовать в качестве соли для md5?

Просмотров: 316   Ответов: 7

В cms используется автоматическое создание превью изображений.

Для этого в mod_rewrite настроено правило, по которому запрос к несуществующей картинке, например image.100x100.jpg, перенаправляется на скрипт, создающий превью изображения image.jpg размером 100x100.


Для того, чтобы злоумышленник не мог самостоятельно вызвать создание любого превью, в этот скрипт передается так же некий токен, который является md5(имя файла + соль).


Суть проблемы в выборе соли, а именно:

Не хочется просить пользователя придумывать соль при установке cms.

Не хочется автоматически генерировать соль при установке, так как не все пользуются установщиком, таким образом соль у многих будет одинаковая, чего допускать нельзя.

Вообще, не очень хочется где-либо хранить её.


Хочется просто «на лету» брать в качестве соли некие данные, которые уникальны для каждой копии скрипта и неизвестны злоумышленнику.


Например, время последней модификации какого-то файла подошло бы, если бы не подбиралось так легко.

Так же подошло бы просто имя домена, на котором работает скрипт, но оно известно злоумышленнику.


Ну и, очевидно, соль не должна меняться со временем, по крайней мере какое-то достаточно длительное время


UPD: похоже darkslesh указал верный путь — хранить в настройках соль(как просто случайное число)+домен, для которого она создана, и при несовпадении домена в настройках с реальным доменом, перегенерировать соль.



  Сведения об ответе

DINO

20:27, 29th September, 2020

А не проще ли сделать такую систему:
1) создаётся файл (не в WEB папке или в закрытой папке )
2) в этот файл записывается 2 строки типа xxxxxxxxx и randomstr, где xxxxx — ip адрес сервера или домен, а вторая строка — как раз соль которая тебе нужна
3) скрипт который использует эту соль считывает файл, затем если IP/домен не совпадает, то сгенерить файл, с новыми параметрами.
Таким образом не нужно будет заботится о том, что скрипт работает без установки.

Еще есть вариант как нибудь извратится с использованием _SERVER[«UNIQUE_ID»] который генерится при каждом запросе пользователя.


  Сведения об ответе

DINO

10:15, 25th September, 2020

Фактически, получается, что требуется подтвердить подлинность запроса превьюшки. Причем обычно, как я понимаю, этот запрос будет генерить сама cms. Ну так возьми и зашифруй MD5(имя файла) любым алгоритмом шифрования. По смыслу — выйдет подпись запроса, которую может сделать только тот, у кого есть ключ (cms).

P.S. А можно пояснить — в чем состоит риск того, что злоумышленник запросит превью любой картинки?


  Сведения об ответе

PAGE

17:32, 30th September, 2020

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

Вот только повторюсь, мне кажется, это должна быть не соль, а именно ключ подписи.


  Сведения об ответе

PHPH

15:58, 27th September, 2020

и при несовпадении домена в настройках с реальным доменом, перегенерировать соль.

и доставив массу веселья тому человеку, который попытается это все перенести на новый домен, или исполльзовать одну сиситему на нескольких доменах сразу.


  Сведения об ответе

ASER

15:55, 26th September, 2020

Или задействовать время запроса. т.е. как только человек запросил страницу, то брать это время с точность до микросекунд и потом его использовать. Подбирать будет бесполезно такое.


  Сведения об ответе

PIRLO

06:29, 30th September, 2020

А почему не хотите сгенерировать превьюшки один раз и отдавать из без каких-либо проблем, например через nginx?


  Сведения об ответе

repe

23:36, 27th September, 2020

Я немного не понял, в какой момент будет генерироваться md5-токен?

В html-коде страницы будет
[img src="image.100x100.jpg"/]
или
[img src="image.100x100.jpg{md5(...)}"/]
?

Если первое (md5 генерируется на пути от http-запроса до скрипта превью), то никакой защиты по сути нет.

Если второе (md5 генерируется в момент волеизъявления использования изображения в какой-либо части сайта — создание шаблона, документа и т.п.), то что мешает вместо генерирования md5 создать в этот момент необходимое превью?


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться