В свете законов SESTA/FOSTA, которые фактически лишают многих владельцев веб-сайтов социальных сетей, форумов и платформ с пользовательским контентом (UGC) значительной части защиты (безопасная гавань по разделу 230), возлагая на них ответственность за действия своих пользователей, может быть разумным рассмотреть использование API распознавания изображений в качестве одного из решений для повышения уровня защиты. Это позволит автоматизировать блокировку загрузки контента откровенного характера (небезопасного, с изображением наготы, жестокости и т. д.).
Также это поможет повысить защиту от эксплойтов, связанных с загрузкой неуместных изображений в черновики, а затем их использованием через прямые ссылки в других местах, фактически превращая платформу в бесплатное анонимное хранилище изображений. Я не уверен, насколько это уязвимо в Discourse, но при настройках по умолчанию такая эксплуатация возможна в течение 180 дней после создания черновика, даже если владелец сайта не знает, что именно было загружено (например, функция удаления черновиков старше N дней).
Было бы здорово проверять все изображения, загружаемые в Discourse через Google Cloud Vision API, чтобы оставаться в безопасности для AdSense. Мы делали это на нашем предыдущем сайте и никогда не сталкивались с загрузкой откровенно непристойных или жестоких изображений.
Google предоставляет Ruby-гем:
Потенциальный плагин должен интегрироваться в основной процесс загрузки изображений в Discourse для всех изображений (сообщения, аватары, фоны профилей и т. д.) и отклонять изображения, содержащие запрещённый контент:
Это абсолютно возможно, но, на мой взгляд, это нарушит «бесшовность» пользовательского опыта. Если бы существовал способ встроить модель прямо в плагин, это было бы здорово.
Я имею в виду, что перед загрузкой проверка изображения путём отправки его через POST-запрос к API и получения зелёного флага займёт какое-то время, верно?
Ну, процесс загрузки встроенных изображений, на мой взгляд, уже асинхронный. А Google API работает очень быстро.
С другой стороны, я также был бы рад проверять изображения после того, как пользователь опубликовал новый пост, используя внешний веб-хук (Discourse API), и редактировать пост пользователя (например, удалять изображение и заменять его текстом «ИЗОБРАЖЕНИЕ УДАЛЕНО АДМИНИСТРАТОРОМ»). Эта часть, кажется, возможна через API, но я не могу найти никаких ссылок на то, как на самом деле УДАЛИТЬ «плохое» изображение через API в таком случае, потому что я даже не хочу хранить его где-то в тени.
Я с радостью займусь этим как платным проектом. Можете ли вы помочь с частью, касающейся API, то есть какой API используется для обнаружения оскорбительного контента и т. д.?
@Terrapop — Стоит учесть точность распознавания. Иногда полезно видеть часть заблокированного контента, чтобы убедиться, что настройки для уровней «POSSIBLE», «LIKELY» и «VERY_LIKELY» не слишком строгие. Ложные срабатывания и пропуски встречаются довольно часто.
Кажется, лучше реализовать отправку всех постов с изображениями, превышающими определённый уровень «возможной adult-контентности», в очередь на проверку. Так пост никогда не станет публичным, но вы сможете одобрить его, если распознавание оказалось неточным. Если пост будет отклонён, изображения, как я понимаю, будут удалены по истечении периода, заданного в параметре «clean_orphan_uploads_grace_period_hours».
Это позволит с большей уверенностью использовать уровень обнаружения «POSSIBLY».
Мы протестировали API на нашем текущем сайте и выяснили, какие уровни подходят нам лучше всего.
@fzngagan разрабатывает для нас плагин с открытым исходным кодом, поэтому после завершения вы сможете внести изменения и отправить запрос на добавление опции, которая не будет сразу отклонять, а перенаправлять в очередь модерации.
Мне нравится идея связать вероятность с очередями проверки, когда изображение является частью поста. Готов принять спонсорскую поддержку или PR в этом отношении.
Если это опциональное дополнение сверху, то для меня это, конечно, приемлемо.
Мы довольно долгое время использовали API в нашем предыдущем сообществе и знаем, какие уровни для нас допустимы. В большинстве случаев API правильно отказывал, и пользователь просто загружал менее серьёзное изображение.
Также я хотел, чтобы проверялись не только посты, но и загрузка изображений для аватаров и фонов профиля. Не знаю, возможна ли для них очередь?