Блог пользователя Proventus

Автор Proventus, история, 6 лет назад, По-русски

Продолжая ковырять CF(мой прошлый пост), я вспомнил про возможность вложения картинок в посты и комментарии. Первой моей мыслью было — "Откуда codeforces.com их берёт?". Варианта было два — сохраняет на свой сервер, либо делает запрос по url. Выложив на бесплатный хостинг тестовую картинку и прикрепив её к посту, а потом удалив с сайта, я увидел, что изображение пропало. Из этого, я сделал вывод, что картинки берутся из url. Написав небольшой скрипт, который обычно используется для ловли cookie, я начал тест. Создав пост с url картинки, который указывал на мой скрипт с параметром GET cook=test(в этот момент файл на сервере содержал "reset"), и попробовав предпросмотр поста — файл на сервере переписался на "test". Получилось! Эта особенность позволяет нам, к примеру считать количество просмотров на посте.

Пример такого счётчика:

Количество просмотров(перезагрузки страниц и дубликаты картинок тоже считаются)

Однако, это может использоваться в дурных целей — например организации DDoS. Злоумышленник может создать коментарий к разбору задач с 10-20 картинками. Тогда, произойдёт (КоличествоОткрывшихРазбор * КоличествоКартинок)(примерно 30000) запросов на серевер.

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

  • Проголосовать: нравится
  • +88
  • Проголосовать: не нравится

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Автокомментарий: текст был обновлен пользователем Proventus (предыдущая версия, новая версия, сравнить).

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Подробнее про скрипт:

Скрипт для cookie(php):

<?php

file_put_contents("cookie.txt", $_GET['cook']); // Дословно — положи в файл значение параметра GET

?>

Счётчик(php):

<?php

file_put_contents("counter.txt", intval(file_get_contents("counter.txt")) + 1); // Аналогично первому. intval() — кастует к целому.

?>

»
6 лет назад, # |
  Проголосовать: нравится +15 Проголосовать: не нравится

Варианта было два — сохраняет на свой сервер, либо делает запрос по url.

Почему не достаточно было посмотреть ведет ли URL картинки в итоговом посте на сервер codeforces?

Вроде делали фичу, что картинки скачиваются, ресайзятся и сохраняются. Но не для того, чтобы защитить сайт от DDoS, а чтобы через год они не ломались из-за говнохостингов.

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

UPD: проблема уже решена, сейчас все картинки скачиваются на сервер. Старые посты всё ещё работают.

  • »
    »
    6 лет назад, # ^ |
      Проголосовать: нравится -13 Проголосовать: не нравится
    Личное мнение