Jump to content

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


Recommended Posts

Проверкой на REFERER я показал что можно проверять откуда пришёл человек, и конечно же можно проверять на полный путь запроса. Да, с curl'ом кому то придётся заморачиваться, но кому оно надо? На фото всё равно будет ватермарк, даже при максимальном размере.

А разве токен отвечает за это? За это отвечает только параметр ресайз. Поэтому когда вы в шаблоне вызываете $image->filename|resize:50:50 у вас уже будет пикча с нужными вам размерами, соотв. ни о каких размерах 2000:2000 речи не идёт, если только вы сами это не укажете.

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

 

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

Да, по большому счету плюс только один. 

 

Если Вам не нравится, изменением пары строк можете отключить токен и работать без него. О возможных последствиях Вас предупредили - решать Вам.

 

"что без него картинка просто не откроется" - не откроется лишь при первом вызове, когда должен работать ресайз. А в дальнейшем очень даже откроется. Поэтому, если уверены, что ресайз для некоторого размера прошел для всех товаров, то можете смело писать картинки для этого размера без токена в yandex.xml и подобных местах.  

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

Top Posters In This Topic

 

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

дальнейшем очень даже откроется.

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

Edited by a13x
Link to post
Share on other sites
  • 5 weeks later...

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

Создаёте в классе IndexView метод:

    public function err404()
    {
        // Иначе страница об ошибке
        header("http/1.1 404 not found");
        // Подменим переменную GET, чтобы вывести страницу 404
        $_GET['page_url'] = '404';
        $_GET['module'] = 'PageView';
        print $this->fetch();
    }
 

В главном файле index.php ищите код который мы добавили в метод и заменяете на:

 

$view->err404();

Далее в файле resize.php делаете примерно такую проверку:

 

if(strpos(@$_SERVER["HTTP_REFERER"], $_SERVER["HTTP_HOST"]) === false)
    $view->err404();

Теперь при запросе изображения которое не сгенерировано, сервер выдаст страницу с 404 ошибкой и человек даже не будет заморачиваться чтобы пытаться работать через curl или подменят заголовок. Если же запрос пришёл с вашего сервера, то проблем не будет. Думаю одна проверка куда проще чем тащить и генерировать токен.

Edited by a13x
Link to post
Share on other sites

Новость хорошая:

 

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

 

Новость плохая:

 

Если же запрос пришёл с вашего сервера, то проблем не будет.

 

Похоже, Вы подразумеваете, что изображения надо показывать ТОЛЬКО на страницах своего домена и если запрос пришел с иного сервера, то это это хакерские штучки. Но это вовсе не так.
И в некоторых случаях картинки могут не показываться. Как минимум:
1. Стандартное письмо о заказе содержит ссылки на картинки, которые при Вашем подходе могут стать битыми в простых ситуациях.
2. Аналогично, если используется yandex.xml, то поисковик вполне может получить 404 вместо картинок.
3. И вообще, ограничивать показ картинок страницами своего домена - в принципе плохая идея для продвижения. Ибо тем самым Вы закрываете, например, полноценные возможности для показа картинок в RSS.

Вообще вопрос не простой, на форуме описано несколько разных способов избавиться от токена, но полностью хорошего решения не найдено.
В одной из последних попыток
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%B6%D0%B5%D0%BD%D0%B8%D1%8F/page-4?do=findComment&comment=96897
недостатки того метода довольно похожи на недостатки Вашего...

Edited by Плохиш
Link to post
Share on other sites

Суть в том что это ТОЛЬКО для генерации новых изображений. Если изображение было сгенерировано ранее, то никаких проблем не будет, ведь суть токена именно в этом.

Поэтому проблема №1 отпадает т.к. человек посещал ссылку с товаром.

Проблема №2: если робот обходил все ваши страницы , то все изображения будут сгенерированы.

Проблема №3: здесь ограничивается не показ, а создание новых.

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

Edited by a13x
Link to post
Share on other sites

Поэтому проблема №1 отпадает т.к. человек посещал ссылку с товаром.

 

С какой же стати она отпадает? Если в шаблоне письма прописан resize:67:67, и больше нигде такого ресайза нет, то ссылка на картинку из письма как раз и даст 404.

 

Проблема №2: если робот обходил все ваши страницы , то все изображения будут сгенерированы.

 

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

Опять же если в yandex.php прописан resize_modifier($p->image, 770, 770) и больше нигде такого ресайза нет, то ссылка на такую картинку и даст 404.

 

Проблема №3: здесь ограничивается не показ, а создание новых.

 

Показ и создание новых в Simpla стандартно делается "на лету", и эти вещи взаимосвязаны.

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

Например, в RSS изменили размер картинки на 97:97, которого ранее нигде не было. Картинки такие НЕ покажутся реально. Вот и будет ограничение на показ...

 

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

 

Эта проблема может возникнуть во всех трех указанных случаях.

 

Значит, Вы вводите дополнительное ограничение: владелец сайта должен каждый раз, когда меняет размер на сайте, думать - а не испортит ли мне это выдачи в случаях 1-3? Неудобство очевидное.

Например, в целях продвижения хочется картинку 550:550, а такой нет сейчас на сайте. Что - вставлять принудительно? Можно, конечно, ее скрыть, но ведь это совсем некрасиво.

 

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

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

 

То есть при практическом применении возможна масса сюрпризов. 

Link to post
Share on other sites

Показ - это значит показ - картинка УЖЕ создана.

Создание - создание И показ картинки.

Именно так работает модуль resize.

Оба варианта абсолютно разные и из второго вытекает первое, но это не равные вещи.

Чтобы понять как работает робот мне не надо знать все его тонкости, обход страниц осуществляется обычным заходом на страницу и никак иначе. Всё что у вас прописано для человека, сработает и для робота, если вы конечно сами там не сделали ограничения.

Если вы любите создавать тучу картинок где отличие в 10-100 пикселей, то этот метод  не для вас.

Он подразумевает создание 3 типов превьюшек: small - (100-200px для категории) , medium - (400-700px для карточки товара) и big - 1200px для большого изображения. Все остальные это ваши тараканы и бред заказчиков. Вы можете создавать для письма 65 пикс, для картинок в футере 37 пикс, для шапки 92 и тп. и использовать токен.

 

 

Например, в целях продвижения хочется картинку 550:550, а такой нет
сейчас на сайте. Что - вставлять принудительно? Можно, конечно, ее
скрыть, но ведь это совсем некрасиво.

В чём проблема вставить ближайшую которая используется? 600 может быть или 700? Или вы боитесь за овертрафик? :lol:

Edited by a13x
Link to post
Share on other sites

Чтобы понять как работает робот мне не надо знать все его тонкости, обход страниц осуществляется обычным заходом на страницу и никак иначе. Всё что у вас прописано для человека, сработает и для робота, если вы конечно сами там не сделали ограничения.

 

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

 

Он подразумевает создание 3 типов превьюшек: small - (100-200px для категории) , medium - (400-700px для карточки товара) и big - 1200px для большого изображения. Все остальные это ваши тараканы и бред заказчиков. Вы можете создавать для письма 65 пикс, для картинок в футере 37 пикс, для шапки 92 и тп. и использовать токен.

 

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

Ибо сама Simpla подразумевает обычную работу с шаблоном - изменил там цифру размера - и оно само вырабатывает новую картинку работает без ограничений.

А если Ваш метод с ограничениями, то и писать бы надо сразу полностью про это - точно и исчерпывающе.

 

В чём проблема вставить ближайшую которая используется? 600 может быть или 700?

 

Много раз приходилось общаться со спецами по SEO. У них обычно требования жесткие. И сами поисковики и разные агрегаторы зачастую свои условия ставят.

 

Вообще странный вопрос от программиста. Обычно программист старается делать, чтобы правильно работало для ЛЮБЫХ данных. А у Вас какие-то надуманные ограничения, к тому же нестрогие на бытовом языке.

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...