coolbust Опубликовано 8 июня, 2013 Жалоба Поделиться Опубликовано 8 июня, 2013 Уважаемые господа!Обнаружил что автоматом создаются вот такие вот страницы. Подскажите пожалуйста, как это дело исправить бы.... coolbust.ru/files/products/IBL001_2.img_1.800x600.jpg?6414d547192ddf41055413ca1cbce0c7 coolbust.ru/files/products/20%D0%BF%D0%B0%D1%80.800x600.jpg?417735ff9dd09132f3c3c37e52a654d2 coolbust.ru/files/products/IBL001_3.img.800x600.jpg?8eb3087000154910af1afbf340fd9974 coolbust.ru/files/products/4%D1%83%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%BA%D0%B8.800x600.jpg?fc36de7a537d9a23f63e814a6398cc81 coolbust.ru/files/products/5%D0%BF%D0%B0%D1%80.800x600.jpg?44306597ad09c54ae0da2eacff04544c coolbust.ru/files/products/IBL001_2.img_3.800x600.jpg?921985eb2e994708d560c9e7fa005d94 coolbust.ru/files/products/2%D1%83%D0%BF%D0%B0%D0%BA%D0%BE%D0%B2%D0%BA%D0%B8.800x600.jpg?2cc90e057bee1064ab7cd371e1ad3a42 coolbust.ru/files/products/IBL001_2.img_2.800x600.jpg?66f189cc83eaca15ee0b80673cf607ac coolbust.ru/files/products/10%D0%BF%D0%B0%D1%80.800x600.jpg?272f8779375d56367982d3e628563e6a Цитата Ссылка на сообщение Поделиться на другие сайты
Arhelmus Опубликовано 8 июня, 2013 Жалоба Поделиться Опубликовано 8 июня, 2013 После знака вопроса идет уникальный token для генерации изображения, это нужно для того чтобы люди немогли засчет вашего сайта сжимать свои картинки. Если интересно прочитайте про PHPThumb или Imagick. Цитата Ссылка на сообщение Поделиться на другие сайты
alaster Опубликовано 8 июня, 2013 Жалоба Поделиться Опубликовано 8 июня, 2013 Понятно откуда они взялись, но есть ли возможность навести красоту. Через смарти resize генерируется url с токеном.А именно, происходит это через: public function resize_modifier($filename, $width=0, $height=0, $set_watermark=false) из Design.php Если я не ошибаюсь, можно заставить уже эту функцию проверять наличие картинки нужного размера. Если есть, токен не добавлять. + немного похимичить в самом resize.php и возможно в .htaccess Подводные камни может кто видит? Цитата Ссылка на сообщение Поделиться на другие сайты
disfated Опубликовано 8 июня, 2013 Жалоба Поделиться Опубликовано 8 июня, 2013 Если картинка уже есть в наличии в ФС, то её отдаёт веб-сервер, движок не участвует. В этом и фишка.А токен нужен, чтобы ресайз мог "инициировать" только пользователь нашего сайта и только тех размеров, которые допускает сам движок.Если исключить проверку токена, то любой дурак может вам сервер загрузить просто запрашивая несуществующие ресайзы.-------------------alaster, не сразу понял, что Вы имели ввиду. Конечно, можно проверять при генерации урла картинки её наличие и не добавлять токен, если она есть. Но с точки зрения производительности, это очень плохая идея. Цитата Ссылка на сообщение Поделиться на другие сайты
coolbust Опубликовано 8 июня, 2013 Автор Жалоба Поделиться Опубликовано 8 июня, 2013 Это все конечно хорошо, но я из за этого не могу исправить ошибки по метатегам Например тайтлы http://audit.megaindex.ru/audit/site_meta/title/coolbust.ru?field=error&sort=desc Как закрыть это дело от индексации? Добавил в роботс.тхт Disallow: /*?*Disallow: /*/*?*Disallow: /*/*/*?*Disallow: /*/*/*/*?* Не помогает.... Цитата Ссылка на сообщение Поделиться на другие сайты
disfated Опубликовано 8 июня, 2013 Жалоба Поделиться Опубликовано 8 июня, 2013 Я в этом не шарю конечно, но непонятно зачем закрывать картинки от индексации? по-моему, наоборот - даже в sitemap прописать можно, без токена и как-то поисковикам сказать, чтобы часть после ? игнорил. Но это надо сеошника спрашивать... Цитата Ссылка на сообщение Поделиться на другие сайты
coolbust Опубликовано 8 июня, 2013 Автор Жалоба Поделиться Опубликовано 8 июня, 2013 Дело в том что из за этого токена создаются страницы! Картинки я и не собирался закрывать. Цитата Ссылка на сообщение Поделиться на другие сайты
alaster Опубликовано 8 июня, 2013 Жалоба Поделиться Опубликовано 8 июня, 2013 Если картинка уже есть в наличии в ФС, то её отдаёт веб-сервер, движок не участвует. В этом и фишка.А токен нужен, чтобы ресайз мог "инициировать" только пользователь нашего сайта и только тех размеров, которые допускает сам движок.Если исключить проверку токена, то любой дурак может вам сервер загрузить просто запрашивая несуществующие ресайзы.-------------------alaster, не сразу понял, что Вы имели ввиду. Конечно, можно проверять при генерации урла картинки её наличие и не добавлять токен, если она есть. Но с точки зрения производительности, это очень плохая идея. Вы правильно меня поняли, я хочу избавиться от белеберды после незвания картинки. Потому как после того, как картинка была сгенерирована нам нет никакой необходимости клепать к ней токен, что бы запросить её. Существующие картинки открываются вне зависимости от токена и его наличия согласно .htaccess`у. Вот и остается сравнить, что быстрееfile_exist() или $this->config->token(...) ~ md5(от засоленого url картинки) В приципе можно засечь время и посмотреть на разницу в результатах. Но лень) кому не лень - буду рад их видеть. Дело в том что из за этого токена создаются страницы! Картинки я и не собирался закрывать. Скрин залейте, пожалуйста. Страниц создаваться не должно. Цитата Ссылка на сообщение Поделиться на другие сайты
coolbust Опубликовано 8 июня, 2013 Автор Жалоба Поделиться Опубликовано 8 июня, 2013 Я ссылку давал на аудит, откройте ее вам все станет понятно http://audit.megaindex.ru/audit/site_meta/title/coolbust.ru?field=error&sort=desc Цитата Ссылка на сообщение Поделиться на другие сайты
disfated Опубликовано 8 июня, 2013 Жалоба Поделиться Опубликовано 8 июня, 2013 coolbust, колонка "страница" называется условно, можно было её ресурсом назвать или ссылка. Суть - это ссылки на картинки на Вашем сайте. И это хорошо, что они индексируются. Не очень хорошо, что с токеном.---------------Существующие картинки открываются вне зависимости от токена и его наличия согласно .htaccess`у.Совсем не обязательно, что все сгенерированные картинки будут в итоге запрошены. Это раз. Два - веб-сервер их отдаёт гораздо оптимальнее, чем это пых будет делать. Хотя, конечно, можно для себя такое реализовать. Но если так делать, то тогда гораздо логичнее реализовать иную схему сжатия картинок (как например opencart делает). Цитата Ссылка на сообщение Поделиться на другие сайты
coolbust Опубликовано 8 июня, 2013 Автор Жалоба Поделиться Опубликовано 8 июня, 2013 Спасибо, а вообще можно убрать генерацию этого токена? Цитата Ссылка на сообщение Поделиться на другие сайты
alaster Опубликовано 8 июня, 2013 Жалоба Поделиться Опубликовано 8 июня, 2013 Спасибо, а вообще можно убрать генерацию этого токена?Извиняюсь, сразу ссылку не увидел. Те изображения, которые Вы наблюдаете страницами конечно же не являются.Однако в индексе яндекса и гугла присутствуют с хвостом. Цитата Ссылка на сообщение Поделиться на другие сайты
disfated Опубликовано 8 июня, 2013 Жалоба Поделиться Опубликовано 8 июня, 2013 Спасибо, а вообще можно убрать генерацию этого токена?Уже же написали - можно. Если просто его убрать - то появляется проблема с безопасностью, т.к. ничего не стоит положить ваш сайт простым скриптом. Или же можно генерировать картинки на этапе генерации урла. Тогда получим проблему с производительностью, которая линейно зависит от кол-ва картинок на странице, что тоже в общем позволяет положить ваш сайт.Вообще, генерация ресайзов - это распространённая проблема. У разных решений - свои плюсы и минусы. Текущий вариант реализации в симпле, имхо - золотая середина. Единственный неприятный момент - это хвост в индексированных поисковиками ссылках на картинки. Это само по себе не особая беда (с т.з. сео), но хотелось бы иметь чистенький индекс. Лично мне кажется, что можно как-то поисковикам объяснить каким образом индексировать картинки. Полагаю гуглить надо в сторону "дубли страниц"... Цитата Ссылка на сообщение Поделиться на другие сайты
disfated Опубликовано 8 июня, 2013 Жалоба Поделиться Опубликовано 8 июня, 2013 Да, кстати, без токена можно даже скрипт не писать, просто запросить такие картинкиcoolbust.ru/files/products/IBL001_2.img_1.5000x5000.jpgcoolbust.ru/files/products/IBL001_2.img_1.5000x5001.jpgcoolbust.ru/files/products/IBL001_2.img_1.5000x5002.jpg....до тех пор пока на хостинге не закончится свободное место... Цитата Ссылка на сообщение Поделиться на другие сайты
alaster Опубликовано 8 июня, 2013 Жалоба Поделиться Опубликовано 8 июня, 2013 Именно так. Еще можно с левого сервака загрузить картинки на наш подобным образом. Цитата Ссылка на сообщение Поделиться на другие сайты
alaster Опубликовано 9 июня, 2013 Жалоба Поделиться Опубликовано 9 июня, 2013 file_exists - должен работать чуть быстрее is_file. if(substr($resized_filename_encoded, 0, 7) == 'http://') $resized_filename_encoded = rawurlencode($resized_filename_encoded); $resized_filename_encoded = rawurlencode($resized_filename_encoded); Мне одному этот кусок кажется бессмысленным? Если http => почистить спецсимволы дважды, если нет => просто почистить. Не вижу проблем с тем, что бы оставить просто: $resized_filename_encoded = rawurlencode($resized_filename_encoded); Ровно как и условии отбросить http. if(substr($resized_filename, 0, 7) != 'http://' && is_file($this->config->resized_images_dir.$resized_filename_encoded) ) Это функция, которая занимается банальной генерацией имя файла с доп. параметрами + не может быть вызвана человеком без соответстующих прав + вызывается исключительно через шаблон от переменных типа $product->image->filename => все проблемы безопасности связанные с ней исчезли как только мы в валидный url превратили строку. Ну и на последок пару сопутствующих вопросов:1) Как url изображений храниться в БД?Судя по products::add_image($product_id, $filename, $name = '') адрес картинки кладется в БД как есть... Стоит отметить, что никаких проверок его валидности мы не делаем т.к. добавлять в базу может только админ и стоит placeholder, который чистит инъекции. 2) Неужели мы заставляем для каждого вызова каждой ресайзнутой картинки исполнять rawurlencode? Почему бы при добавлении в БД не сделать его 1 раз, а в resize_modifier() приляпывать лишь доп. параметры, да токен (при необходимости) ? Цитата Ссылка на сообщение Поделиться на другие сайты
disfated Опубликовано 9 июня, 2013 Жалоба Поделиться Опубликовано 9 июня, 2013 Мне одному этот кусок кажется бессмысленным? Нет. Мне тоже. --------Вроде бы не видно никаких проблем с безопасностью или со свободным местом..-----------Проблема с производительностью. Теперь при каждой генерации странички у вас будет добрую сотню раз (а может и тысячу) вызываться `stat()` - это очевидно избыточная операция. Если Вы в других темах ратуете за то чтобы множественные операции с бд (даже инициированные из админки) выполнять в одном запросе в целях повышения производительности, то предложенное решение абсолютно эквивалентно выполнению одному простенькому запросу к бд на каждую картинку на каждой странице...------------Почему бы при добавлении в БД не сделать его 1 раз, а в resize_modifier() приляпывать лишь доп. параметры, да токен (при необходимости) ?------------Потому что в бд "надо" хранить данные в неформатированном виде... Цитата Ссылка на сообщение Поделиться на другие сайты
alaster Опубликовано 9 июня, 2013 Жалоба Поделиться Опубликовано 9 июня, 2013 Смысл этот кусок ИМЕЕТ. Результат работы будет разным - бесспорно. А вот смысловой нагрузки условный оператор не несет. Если Вы его вычеркните, все будет работать. Потому что в бд "надо" хранить данные в неформатированном виде... Есть изображение с компа: ya$plohoe!изображе##enie.pngПри загрузке... Сейчас.В БД будет добавлена строка с url = ya$plohoe!изображе##enie.pngДалее при каждой генерации страницы с ним: $product->image->filename|resize..... (ведь именно так написано у нас в шаблоне)Т.е. каждый раз будет выполняться rawurlencode, который лишь добвляет параметры ресайза и токен. Генерация самого изображения будет выполнена естественно единожды, при последующих запросах мы будем отдавать уже сгенерированное. Предлагается.В БД сразу добавлять rawurlencode($url), потому как оригинал загруженный на сервере уже имеет такое имя. А в |resize лишь добавлять к нему параметры и токен. Ни resize.php ни пользователь - изменений не заметит. О производительности. И is_file, и file_exists медленные (даже учитывая кэш). md5 - многократно быстрее.Как следствие токены лучше оставить и не дергаться с обращением к файловой системе. (впрочем для обсуждаемого сайта с количеством изображений 3 шт. - хоть в ручную их загружай и выводи). Цитата Ссылка на сообщение Поделиться на другие сайты
coolbust Опубликовано 9 июня, 2013 Автор Жалоба Поделиться Опубликовано 9 июня, 2013 Господа программисты. Все это конечно хорошо и здорово, но мне (и рядовому юзеру симплы я думаю тоже) совершенно непонятно, Уважаемый kors Вы не могли бы подсказать в каком файле вы это дело правили? UPDATE Нашел сам /api/design.php Изменил как написал господин kors , токены пропали.... Насчет безопасности и производительности ничего сказать не могу, т.к. не разбираюсь, ну будем тестить =) Спасибо Цитата Ссылка на сообщение Поделиться на другие сайты
disfated Опубликовано 9 июня, 2013 Жалоба Поделиться Опубликовано 9 июня, 2013 С небольшим кол-вом товаров угроз никаких нет, можете не тестить Цитата Ссылка на сообщение Поделиться на другие сайты
coolbust Опубликовано 9 июня, 2013 Автор Жалоба Поделиться Опубликовано 9 июня, 2013 Возникла проблема, мб виноват хостинг, но 1) не у всех картинок ушли хвосты в связи с этим я, удалил все старые картинки и попытался загрузить новые но 2) новые не загрузились Пока вернул старую версию design.php, в чем проблема я пока не понял.... disfated проблема актуальна, т.к. есть еще несколько магазинов с большим кол-вом товара! Цитата Ссылка на сообщение Поделиться на другие сайты
disfated Опубликовано 9 июня, 2013 Жалоба Поделиться Опубликовано 9 июня, 2013 2) новые не загрузилисьну так отлавливать надо ошибку, дебажить. disfated проблема актуальна, т.к. есть еще несколько магазинов с большим кол-вом товара!Ну я вроде писал уже всё подробно. Нового ничего пока не изобрели. Если конкретно Ваш магаз на конкретном хосте работает норм - значит норм.Просто тут как бы раздел в общем о движке, а не по частным проблемам. Тем более ошибки то нет никакой. Цитата Ссылка на сообщение Поделиться на другие сайты
notuser Опубликовано 5 июля, 2013 Жалоба Поделиться Опубликовано 5 июля, 2013 А можно как-то отлючить эти токены при выгрузке фото в прайс агрегаторы? А то выходит что они не видят моих изображений. Цитата Ссылка на сообщение Поделиться на другие сайты
alaster Опубликовано 5 июля, 2013 Жалоба Поделиться Опубликовано 5 июля, 2013 А можно как-то отлючить эти токены при выгрузке фото в прайс агрегаторы? А то выходит что они не видят моих изображений.Не вижу связи ? Токен нужен только для того, что бы было разрешение на обработку оригинала изображения. Потом к копии с водяным знаком Вы можете обращаться не указывая токен. Цитата Ссылка на сообщение Поделиться на другие сайты
notuser Опубликовано 5 июля, 2013 Жалоба Поделиться Опубликовано 5 июля, 2013 alaster мне кажется вы не совсем внимательно прочитали то что я написал и начали искать какую-то связь. Повторюсь. У симплы есть экспорт в яндекс маркет - по аналогии с ним сделаны файлы для Украинских прайс агрегаторов. Так вот эти агрегаторы не понимают фотографий если в конце есть какой-либо "мусор" в нашем случае это уникальный токен каждой фотки (http://******/files/products/zarjadnoe_ac-4e.200x200.jpg?750d64c3c9afe7a458b69d7954c076c1) Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.