Compare lengths of hashtags with the content length for improved spam detection

pull/13856/head
Michael 2024-01-26 11:22:01 +00:00
parent efe1ea5c3c
commit b8f80a8d25
2 changed files with 10 additions and 5 deletions

View File

@ -113,13 +113,18 @@ class Relay
} }
if (!empty($tagList) || !empty($denyTags)) { if (!empty($tagList) || !empty($denyTags)) {
$content = mb_strtolower(BBCode::toPlaintext($body, false));
$max_tags = $config->get('system', 'relay_max_tags'); $max_tags = $config->get('system', 'relay_max_tags');
if ($max_tags && (count($tags) > $max_tags) && preg_match('/[^@!#]\[url\=.*?\].*?\[\/url\]/ism', $body)) { if ($max_tags && (count($tags) > $max_tags) && preg_match('/[^@!#]\[url\=.*?\].*?\[\/url\]/ism', $body)) {
Logger::info('Possible hashtag spam detected - rejected', ['hashtags' => $tags, 'network' => $network, 'url' => $url, 'causer' => $causer, 'body' => $body]); $cleaned = preg_replace('/[@!#]\[url\=.*?\].*?\[\/url\]/ism', '', $body);
return false; $content_cleaned = mb_strtolower(BBCode::toPlaintext($cleaned, false));
}
$content = mb_strtolower(BBCode::toPlaintext($body, false)); if (strlen($content_cleaned) < (strlen($content) - strlen($content_cleaned))) {
Logger::info('Possible hashtag spam detected - rejected', ['hashtags' => $tags, 'network' => $network, 'url' => $url, 'causer' => $causer, 'body' => $body]);
return false;
}
}
foreach ($tags as $tag) { foreach ($tags as $tag) {
$tag = mb_strtolower($tag); $tag = mb_strtolower($tag);

View File

@ -239,7 +239,7 @@ return [
// relay_max_tags (Integer) // relay_max_tags (Integer)
// Maximum amount of tags in a post before it is rejected as spam. // Maximum amount of tags in a post before it is rejected as spam.
'relay_max_tags' => 10, 'relay_max_tags' => 20,
// proxify_content (Boolean) // proxify_content (Boolean)
// Use the proxy functionality for fetching external content // Use the proxy functionality for fetching external content