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

У меня установлена Discourse, и я ею очень доволен. Недавно спамеры нашли способы обхода встроенной защиты от спама. Проблема в том, что они размещают изображения в своих сообщениях, а затем сразу же встраивают эти изображения в спам-рассылки, которые отправляют тысячам людей. Даже если я удаляю сообщения, эти изображения, похоже, остаются доступными ещё довольно долгое время.
Это привело к нескольким жалобам на спам от моего хостинг-провайдера.

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

Нашёл ли кто-нибудь рабочее решение этой проблемы?

Я уже пытался раскомментировать команду valid_referers для ^/uploads, но, похоже, это ничего не даёт. Изображения всё ещё можно встраивать:

   location ~ ^/uploads/ {

      # NOTE: it is really annoying that we can't just define headers
      # at the top level and inherit.
      #
      # proxy_set_header DOES NOT inherit, by design, we must repeat it,
      # otherwise headers are not set correctly
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Request-Start "t=${msec}";
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $thescheme;
      proxy_set_header X-Sendfile-Type X-Accel-Redirect;
      proxy_set_header X-Accel-Mapping $public/=/downloads/;
      expires 1y;
      add_header Cache-Control public,immutable;

      ## optional upload anti-hotlinking rules
      valid_referers folivora.ai *.folivora.ai *.llo.ai;
      if ($invalid_referer) { return 403; }

      # custom CSS
      location ~ /stylesheet-cache/ {
          add_header Access-Control-Allow-Origin *;
          try_files $uri =404;
      }
      # this allows us to bypass rails
      location ~* \.(gif|png|jpg|jpeg|bmp|tif|tiff|ico||avif)$ {
          add_header Access-Control-Allow-Origin *;
          try_files $uri =404;
      }
      # SVG needs an extra header attached
      location ~* \.(svg)$ {
      }
      # thumbnails & optimized images
      location ~ /_?optimized/ {
          add_header Access-Control-Allow-Origin *;
          try_files $uri =404;
      }

      proxy_pass http://discourse;
      break;
    }

Хм, это довольно сложный вопрос. :thinking:

Кажется, если отредактировать пост, чтобы удалить изображение (чтобы оно не входило в последнюю версию поста, удалённого или иного рода), и также установить параметр clean orphan uploads grace period hours на минимальное значение — 1 час, — это может ускорить удаление.

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

Я уже установил таймер на один час, но они всё равно очень быстро рассылают спам-письма…

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

Существует функция «Безопасная загрузка» (Secure Uploads), которая может быть полезна:

Хотя это сложная настройка, и я не очень хорошо с ней знаком.


На самом деле, перечитав это ещё раз, возможно, она всё же не подойдёт для этой задачи:

Возможно, мне стоит разместить это как запрос на новую функцию.

По сути, мне нужно два варианта:

  • возможность немедленно удалять изображения, если пользователь удален (включая аватар);
  • возможность немедленно удалять или защищать изображения, если пользователь помечен для проверки.

Используйте это — вы сможете легко и быстро навсегда удалить изображения

Спасибо, я попробую. Вы уверены, что изображения тоже будут удалены навсегда?

Я думаю, что это удаляет сообщения, а загрузка файлов обрабатывается аналогичным образом с использованием параметра clean orphan uploads grace period hours.

Также существует встроенная задержка в 5 минут между мягким удалением и постоянным удалением одним и тем же администратором (хотя второй администратор не столкнется с такой же задержкой).

В любом случае, стоит попробовать. :crossed_fingers:

Да. И как сказал выше другой человек, нужно подождать 5 минут. Просто используйте другую учётную запись администратора, чтобы сделать это мгновенно. Это навсегда удалит изображение.

Я думаю, что в вашей конфигурации NGINX что-то не так. Когда я пытаюсь открыть изображение с вашего форума в новой вкладке, оно загружается без проблем, хотя не должно, так как я не передавал referer :thinking:

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