Jump to content

token у рисунков - идея по переделке


Recommended Posts

Всем привет.
Интересует мнение разработчиков. 

Задача: избавится от token в get запросе у рисунков, с сохранением механизма проверки от нежелательных ресайзов

Идея реализации: перенести token в название файла. 

в результате имя файла будет примерно таким: {filename}.{width}x{height}{w}_{token}.{ext} 
сам token брать из строки {filename}.{width}x{height}{w}.{ext}

маска регулярки выходит такой /(.+)\.([0-9]*)x([0-9]*)(w)?(_[a-f0-9]{32})\.([^\.]+)$/

Надеюсь суть идеи понятно изложил.
Интересует Ваше мнение, возможно у кого то есть другие идеи. 

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

 

Link to post
Share on other sites
  • Replies 57
  • Created
  • Last Reply

Top Posters In This Topic

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

Link to post
Share on other sites

Идея реализации: перенести token в название файла.

 

На форуме уже было как минимум 3 разных решения, чтобы убрать токен СОВСЕМ, но проверку сохранить.  Вот это идея, которая для пользователей все упрощает.

А Ваше предложение - это просто поменять шило на мыло...

 

Хорошее общедоступное бесплатное решение:

http://forum.simplacms.ru/topic/8424-%D1%83%D0%B1%D0%B8%D1%80%D0%B0%D0%B5%D0%BC-%D1%82%D0%BE%D0%BA%D0%B5%D0%BD-%D0%B8%D0%B7-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B5%D0%BD%D0%B8%D1%8F/

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

Link to post
Share on other sites

Вовсе оно не супер, а максимум фикс.

 

Может и не супер, но доступно и работает.

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

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

Link to post
Share on other sites

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

Если готов оплатить мое время - контакты в профиле.

Link to post
Share on other sites

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

Что бы settings->image_sizes задавался не в ручную, а автоматически.

 

Для этого в ф-и add_resize_params класса Image делаем проверку.

Если заданного размера нет в image_sizes - то записываем его.

 

Таким образом мы сможем получать гет-запросом только те изображения которые прошли через add_resize_params (а это лишь те что прописаны у нас на сайте). Да со временем этих размеров может накопиться уйма. Но по мне раз в два года очистить - не проблема: 

 

 $simpla->settings->image_sizes = '';

Link to post
Share on other sites

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

Что бы settings->image_sizes задавался не в ручную, а автоматически.

 

Для этого в ф-и add_resize_params класса Image делаем проверку.

Если заданного размера нет в image_sizes - то записываем его.

 

Таким образом мы сможем получать гет-запросом только те изображения которые прошли через add_resize_params (а это лишь те что прописаны у нас на сайте). Да со временем этих размеров может накопиться уйма. Но по мне раз в два года очистить - не проблема: 

 

 $simpla->settings->image_sizes = '';

 

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

Link to post
Share on other sites

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

 

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

+ данный подход проще для верстальщиков. Проще экспериментировать с размерами

Link to post
Share on other sites

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

+ данный подход проще для верстальщиков. Проще экспериментировать с размерами

 

ну так можно сделать дофигища размеров, и верстальщики могут наделать на каждой странице их разные). можно ввести например параметр фото - small, middle, large, full и в зависимости от них отдавать картинку. а размеры этих 4х параметров задавать в админке. обычно хватает.

Link to post
Share on other sites

ну так можно сделать дофигища размеров, и верстальщики могут наделать на каждой странице их разные). можно ввести например параметр фото - small, middle, large, full и в зависимости от них отдавать картинку. а размеры этих 4х параметров задавать в админке. обычно хватает.

Подобно тому как это сделано в ImageCMS. 

Хорошая мысль, тоже как-то думал об этом.

Link to post
Share on other sites

Имеется разработка:


Адресация изображений без излишеств
Создана возможность записывать URL изображений товаров без токенов - хвостов зашифрованного кода.
Метод состоит в том, что список разрешенных имен файлов для ресайзинга хранится в специально созданной таблице и поэтому необходимость токенов отпадает.
Дополнительно для экономии места таблица очищается от записей, сделанных ранее некоторого срока (например, 3 дня).

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

http://simpla-tuning.com/adresatsiya-izobrazhenij-bez-izlishestv

 

При этом отсутствует недостаток разработки от DaVinci.

Если в шаблоне новый размер ввели, то он будет обрабатываться.

Если в шаблоне какой-то размер удалили, то он перестанет обрабатываться.

Никаких лишних размеров (как описано #9) нигде не накапливается.

Никакого лишнего контроля от пользователя (типа предложенного mishanya в #10) не требуется.

Все работает автоматически...

 

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

 

Кстати - замечание для osben-а: если у Вас такой энтузиазм, то вместо своего малополезного предложения разработали ли бы лучше настоящий полный ресайз - для всех картинок, а не только для товаров. Была бы настоящая большая польза, а не примитивное косметическое украшение...

Link to post
Share on other sites

 Метод, возможно, спорный. Кто-то, вероятно, увидит в этом излишнее усложнение.

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

http://simpla-tuning.com/adresatsiya-izobrazhenij-bez-izlishestv

Т.е. если я открываю страницу каталога, нажимаю "показать все", у меня вываливается к примеру 800 товаров, нагрузка существенно не возрастет)?

Link to post
Share on other sites

Т.е. если я открываю страницу каталога, нажимаю "показать все", у меня вываливается к примеру 800 товаров, нагрузка существенно не возрастет)?

 

Если Вы - один из рядовых посетителей, то, скорее всего, все 800 картинок до Вашего посещения УЖЕ обработаны резайзом. В этом случае ВООБЩЕ не будет дополнительной нагрузки, так как ресайз при создании страницы вообще не будет задействован.

 

Может возникнуть нагрузка, если в админке непосредственно перед Вашим посещением записали эти 800 товаров. Это максимум 800 легких дополнительных запросов. Полагаю, эта ситуация весьма редкая.

 

 

Да, существенно не возрастет.

Link to post
Share on other sites

ой, я что то пропустил. 
вставлю своих 5 копеек.
Считаю что DaVinci придумал очень интересно решение и лаконичное.
И его в принципе можно было использовать, но все загвоздка как раз в settings->image_sizes которая приводит к лишним запросам в бд.

Поэтому и хотел бы услышать идеи как выйти из этой ситуации с токенами. 

П.с. вариант который я предложил я понял спустили

Link to post
Share on other sites

А почему бы не сделать проверку в функции ресайза на существование ресайза?

И если он УЖЕ ЕСТЬ - запрашивать его без токена?

А если нет - тогда вперед и с токеном? 

Link to post
Share on other sites

Считаю что DaVinci придумал очень интересно решение и лаконичное.

И его в принципе можно было использовать, но все загвоздка как раз в settings->image_sizes которая приводит к лишним запросам в бд.

 

Интересно, где Вы в решении DaVinci нашли лишние запросы? Большинству сайтов его можно и нужно использовать не в принципе, а в реальности...

 

Если в шаблоне появится новый размер, то решение DaVinci добавит один запрос в базу по обновлению settings. Причем добавит ОДИН РАЗ у первого пользователя, который откроет одну из картинок  этого нового размера, а дальше никаких дополнительных запросов не будет даже при открытии других картинок любыми посетителями...

Link to post
Share on other sites

А почему бы не сделать проверку в функции ресайза на существование ресайза?

И если он УЖЕ ЕСТЬ - запрашивать его без токена?

А если нет - тогда вперед и с токеном? 

 

Видимо, из-за этого:

http://forum.simplacms.ru/topic/1506-как-избавиться-от-подобных-окончаний-0d94d4f282e8b4ff474e96beb50e18d6-на-к/?p=15764

Link to post
Share on other sites

А почему бы не сделать проверку в функции ресайза на существование ресайза?

И если он УЖЕ ЕСТЬ - запрашивать его без токена?

А если нет - тогда вперед и с токеном?

Проверка на токен вообще не нужна, вы все не в том направлении мыслите.
Link to post
Share on other sites

Проверка на токен вообще не нужна, вы все не в том направлении мыслите.

 

Я вам посылку принёс, только я вам её не отдам, потому как у вас документов нету.

Link to post
Share on other sites

Проверка на токен вообще не нужна, вы все не в том направлении мыслите.

Не совсем согласен.

Без нее было бы проще, но с ней безопаснее. 

 

 

Link to post
Share on other sites

Не совсем согласен.

Без нее было бы проще, но с ней безопаснее.

Если переделать немного функционал ресайза, то в целях безопасности токен становится не нужным.
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...