Stop Forum Spam Plugin

Overview

The Stop Forum Spam plugin (unofficial) can help weed out human spammers who are able to bypass Discourse’s built-in spam tools (thanks to their awesome human powers). Right after a new user signs up on your forum (before they have time to post), this plugin will check the user’s email address, forum username, and/or IP address (depending on your plugin settings) against the Stop Forum Spam database. If the user is found in this database of known spammers, their user account will be immediately auto silenced in Discourse.

Note: If needed, you can unsilence the user in the UsersSilenced section of the Discourse Admin.


Installation

Follow these instructions to install this plugin in your Discourse installation.

Note: This plugin’s git clone url is GitHub - singerscreations/discourse-stopforumspam · GitHub.


Configuration

After installing this plugin in Discourse, you’ll be able to configure the following settings in the SettingsPlugins section of the Discourse Admin:

  • stopforumspam enabled: Enable the Stop Forum Spam plugin. This will auto silence new users who are in the Stop Forum Spam database of known spammers.

  • stopforumspam check email: Silence new user if email is found in Stop Forum Spam database.

  • stopforumspam check username: Silence new user if username is found in Stop Forum Spam database.

  • stopforumspam check ip: Silence new user if IP is found in Stop Forum Spam database.

  • stopforumspam minimum entries found: User must appear in the Stop Forum Spam database at least this number of times.

  • stopforumspam recheck users after hours: Number of hours to wait before rechecking new users a second time to make sure they are still not in the Stop Forum Spam database. Set to 0 to disable recheck.

Note: If you have more than one of these check settings enabled, the user will be deemed a spammer as soon as one of them is found in the Stop Forum Spam database.


GitHub Repository

https://github.com/singerscreations/discourse-stopforumspam


Questions/Comments/Suggestions

While I don’t mind if you reach out to me directly for help, it would be benefit everyone here if you’d post your questions, comments, and/or suggestions below.

33개의 좋아요

I added a new stopforumspam recheck users after hours plugin setting to allow users to be rechecked again after X hours. This will allow more spammers to be cleaned up later when they are not found in the Stop Forum Spam database on the first check.

1개의 좋아요

This is a great idea — however, I would have expected that spammers change their email address each new time they spam so I’m surprised that checking such a database is effective.

2개의 좋아요

It’s very effective, but it’s certainly not foolproof.

7개의 좋아요

An improvement proposal:

  • Add option to put suspicious users in the review queue directly after login (instead of silencing)
  • Add option to put suspicious users in the review queue after their first posting
  • Add option to the review queue actions: “Delete user and report to SFS”

Certainly works only for forums with little spam volume.

5개의 좋아요

Hi there, thanks a lot @msinger for this plugin, I’ve been using SFS for years on a non-Discourse forum and it definitely helps.

The option to recheck new accounts after X hours is a fantastic idea, thanks for adding it!

A few possible improvements for this plugin:

  • Is it possible to make it work from the very beginning at the registration page so spammers can’t even sign up?
  • Could admin configurable thresholds be implemented to specify how many hits in the SFS database for username, email, and IP in order to consider it a spammer?
  • An admin button to report a user and its posts to SFS would be nice.

Thanks again

1개의 좋아요

Does this plugin work with the latest version of discourse?

I notice StopForumSpam is down at present, showing “too many database connections” - is it possible this plugin is part of the problem? Could this plugin apply a rate limit, if it doesn’t already?

(And, how does this plugin react if it can’t get a good response from the service?)

1개의 좋아요

I know the question was from December, but… I think that was a fluke; Stop Forum Spam has been generally up and working.

This plugin works by async jobs, so it will not break the user experience if Stop Forum Spam is down.

2개의 좋아요

@msinger I see it’s been five years since you committed to this plugin.

Do you have any thought of making changes and improvements to this plugin, or have you moved on and it’s reasonable for someone to fork?

Thanks!

2개의 좋아요

버전 2.0에서 Stopforumspam Minimum Entries Found라는 새 설정을 추가했습니다. 기본적으로 이 설정값은 1로 설정되어 있습니다. 이메일, 사용자 이름 또는 IP 주소에 대한 매칭 임계값을 조정하려면 값을 높일 수 있습니다.

또한, 사용자가 무음 처리(silenced)될 경우, 이유에 발생 횟수가 포함되도록 변경되었습니다.

3개의 좋아요

네, 원래 프로젝트의 범위 안에서 이루어지는 한에서는 그렇게 할 것입니다. 만약 저의 초기 비전을 넘어 확장하려는 것이라면, 자유롭게 포크를 생성하셔도 됩니다.

3개의 좋아요

Discourse의 공격적인 릴리스 일정 때문에 영원히 깨지지 않을 것이라고 보장할 수는 없지만, 최신 베타 버전에서는 완전히 정상적으로 작동합니다. 현재 3.5.0.beta2-dev 버전으로 모든 포럼에서 실행 중입니다.

3개의 좋아요

최근 이 플러그인을 설치했는데, 아직 누군가를 잡아낸 것 같지 않습니다(새로운 사용자 IP가 stopforumspam에 꽤 자주 표시되므로 곧 잡힐 것이라 확신합니다).

게시물이 감지되면 검토 대기열로 이동하나요?

아니요, 제 생각에는 그렇게 되면 플러그인의 목적을 다소 퇴색시킬 것 같습니다. 이 플러그인은 기본적으로 확인된 스팸 사용자를 차단하는 완전 자동화 시스템으로, 조정(모더레이션) 시간이 전혀 필요 없어야 하니까요. 하지만 /admin/users/list/silenced 경로에서 확인해 볼 수 있으며, 플러그인에 의해 침묵 처리된 사용자의 사유에는 "StopForumSpam에서 사용자가 발견됨"이라고 표시됩니다.

1개의 좋아요

훌륭하네요. 이 페이지가 있다는 사실을 몰랐습니다.

플러그인이 열심히 작동하고 있는 것 같습니다!

저는 수년간 포럼에서 스팸 사용자로 인해 고생해 왔으며, 관리자의 업무를 최소화하기 위해 다양한 방법을 시도해 보았습니다. 제가 본 바로 이 플러그인이 훌륭한 일을 해낼 것이라고 확신합니다!

2개의 좋아요

거짓 양성 반응은 없나요?

이 플러그인을 사용하기 전부터도, stopforumspam에서 매칭된 모든 계정은 사용자를 BAN할 정도로 의심스러워 보였습니다.

그래서 저는 이 데이터베이스가 신뢰할 만해 보이므로 그대로 신뢰하고 있습니다.

2개의 좋아요

거짓 양성(false positive)이 나온 적은 한 번도 없었습니다(즉, 무언가를 발견할 때마다 항상 SFS 데이터베이스에 실제로 존재하는 것이었습니다).

한 가지 주의할 점은 API에 한 가지 제한 사항이 있다는 것입니다. 이메일 주소가 정확히 일치하지 않는 경우에도 매칭될 수 있습니다. SFS는 해당 도메인을 "독성 도메인(toxic domain)"으로 식별하지만, API는 이를 알려주지 않습니다. 따라서 해당 도메인의 이메일 주소를 가진 사용자는 이메일 매칭으로 표시되지만, SFS 데이터베이스에서 검색을 해도 정확한 이메일 주소를 찾을 수 없습니다.

데이터베이스는 커뮤니티의 노력으로 구축되므로, 사용자가 실제로 스팸 발송자가 아니라도 누군가에 의해 특정 이유로 스팸 발송자로 식별되었을 가능성이 있습니다. 이는 드문 경우이지만 실제로 발생하기도 합니다(이것이 SFS에 ‘이의 제기(appeal)’ 절차가 있는 이유입니다).

2개의 좋아요

지금까지는 가장 고유한 식별자인 이메일 주소 일치만 확인하도록 설정해 두었습니다. IP 주소와 사용자 이름 일치는 오인식이 발생할 가능성이 훨씬 높기 때문에 해당 체크를 비활성화해 두었습니다. 하지만 이제 임계값을 설정할 수 있으므로 IP 주소의 경우 30회 일치와 같은 매우 높은 임계값을, 그리고 사용자 이름의 경우에도 유사한 수준으로 설정해 볼 것입니다.

기억해 두어야 할 좋은 지적입니다. 이 부분을 파악하는 데 꽤 오랜 시간이 걸렸습니다. 솔직히 말해 이러한 "독성 도메인"이라는 이름은 매우 적절합니다. 이러한 이메일로 가입하는 사용자는 스팸을 보내거나 반복적인 트롤링/괴롭힘에 대한 밴을 회피하려는 악의적인 의도를 가지고 있을 가능성이 거의 확실합니다. 다행히 이 플러그인은 단순히 해당 사용자를 침묵 상태로만 만듭니다. 만약 오인식이 발생했다면, 다른 필수 플러그인(개인적으로 필수라고 생각합니다)을 활성화해 두었기 때문에 스태프에게 연락할 수 있습니다:

1개의 좋아요