Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

We have spam #875

Open
1 of 6 tasks
miguelvaara opened this issue May 22, 2019 · 5 comments
Open
1 of 6 tasks

We have spam #875

miguelvaara opened this issue May 22, 2019 · 5 comments

Comments

@miguelvaara
Copy link
Contributor

miguelvaara commented May 22, 2019

As we know, spambots are sending spam by making use of feedback form in Skosmos. Recently amount of spam has increased. We are very glad to hear good tips and suggestions to solve this issue 🙂

How to strengthen spam filtering

Proposal 1:
In globalconfig adjust honeypot time

Proposal 2:

In most cases spambots read directly some URLs, I belive. People are more used to click or tab and “surf” on website and they do it mainly via frontpages.
Human user:

  1. Goes to Finto.fi/fi (sv, en) frontpage
    a. System: Sets up a cookie FBvisited=yes
    b. System: Expiration = 3600 sec

  2. By clicking the Feedback-link on the frontpage, the user is automatically redirected to the refresh page, which sets up a new cookie FeedVisited=yes and then redirects user to the real feedback page (by refresh action in some seconds).

  3. On the real Feedback-page the form is not submitted before a function X has checked the values in the cookies. If both values are yes, the form can be submitted.

  4. Result: Feedback is not sent if there is no visiting on the frontpage and Feedback-link is not tabbed or clicked in certain order. Spambot likely do not follow the order -> Front page -> Feedback refresh-page. To submit the form, the user have to visit firstly on Front page and then Feedback refresh-page.

Proposal 3:

  1. Sets up a cookie visited=yes if user has been visiting on some concept page but the cookie is not set up on feedback page, the feedback page is excluded.

  2. On the feedback-page the form is not submitted before a function X has checked the value in the cookie. If value is yes, the form can be submitted.

  3. Result: Feedback is not sent if the visiting starts on the feedback page. We can assume that bots direct actions directly in some URL (page like http://finto.fi/fi/feedback).

TO-DO

  • Figure out how spambots crawl our feedback form (start it by trying to compare spam emails with Apache logs)
  • Based on the results figured out above, design the best possible solution
  • Coding... implementing the possible solution
  • Test the solution
  • Review the solution, if the test succeeded
  • Push/PR (with reviewer)
@kouralex kouralex added this to the Next Tasks milestone Oct 30, 2019
@kouralex kouralex modified the milestones: Next Tasks, 2.3 Dec 3, 2019
@MikkoAleksanteri MikkoAleksanteri added this to Enhancements in Skosmos Backlog Jan 24, 2020
@MikkoAleksanteri MikkoAleksanteri added this to Proposed product backlog items in Sprint Backlog 02/2020 via automation Jan 30, 2020
@kouralex kouralex modified the milestones: 2.3, Next Tasks Feb 12, 2020
@miguelvaara miguelvaara added this to Proposed product backlog items in Sprint Backlog I/2021 via automation Mar 1, 2021
@miguelvaara
Copy link
Contributor Author

miguelvaara commented Mar 1, 2021

If an action sending the feedback allowed only mouse clicks we could use jQuery to listen mouse click events?

"originalEvent.detail" is true if the button is clicked by the mouse. Bots cannot click the mouse button.


<input id="this_does_something" type="button" value="Send feedback">
...
$('#this_does_something').click(function(e) {
  if (e.originalEvent.detail) {
    $(this).val('Clicked by mouse');
  } else {
    $(this).val('Not clicked by mouse!');
  }
});

In addition, also keyboard actions can be listened (eg. if a key is pressed): document.addEventListener('keydown', fn);

Listening the mouse clicks and the pressed keyboard keys together enable an accessible implementation - maybe.

@joelit joelit moved this from Proposed product backlog items to Selected product backlog items in Sprint Backlog I/2021 Mar 1, 2021
@joelit joelit added the size-large more than 2 days label Mar 1, 2021
@osma
Copy link
Member

osma commented Mar 1, 2021

My suggestion for some criteria for an acceptable solution:

  1. The change should not adversely affect accessibility; it should still be possible to use the feedback form on various types of browsers (desktop, mobile, text-only, text-to-speech) and with different input methods (mouse, keyboard, voice...). Usability should remain on the same level as well.
  2. The change should not require storing state information on the server side, for example using session cookies. Skosmos is currently stateless (apart from some preference cookies) and we should keep it that way, because it simplifies the hosting setup a lot.
  3. We should not rely on third party services (e.g. reCAPTCHA by Google), as these may have e.g. privacy issues.

I believe the accessibility criterion rules out many of the above proposed changes, for example the recent one related to mouse actions (because it should still be possible to use the feedback form without a mouse).

@miguelvaara
Copy link
Contributor Author

miguelvaara commented Mar 1, 2021

I agree with you @osma. I think, all the three points you mentioned are valid. In addition to a properly functioning feedback form the points can be considered as minimum requirements.

@miguelvaara
Copy link
Contributor Author

miguelvaara commented Mar 4, 2021

TO-DO

  • Figure out how spambots crawl our feedback form (start it by trying to compare spam emails with Apache logs)
  • Based on the results figured out above, design the best possible solution
  • Coding... implementing the possible solution
  • Test the solution
  • Review the solution, if the test succeeded
  • Push/PR (with reviewer)

@joelit joelit moved this from Selected product backlog items to Postponed in Sprint Backlog I/2021 Mar 11, 2021
@miguelvaara
Copy link
Contributor Author

Pull request #1131 (Fix calculation of minimum time in feedback honeypot) and related Pull request #1149 (Avoid sending empty email when invoking the feedback form) hopefully help to fix the problems behind this issue.

@kouralex kouralex added this to Proposed product backlog items in Sprint Backlog II/2021 via automation May 12, 2021
@kouralex kouralex moved this from Proposed product backlog items to Selected product backlog items in Sprint Backlog II/2021 May 12, 2021
@osma osma added this to Not finished during previous sprints in Sprint Backlog III/2021 Sep 2, 2021
@kouralex kouralex moved this from Not finished during previous sprints to Proposed product backlog items in Sprint Backlog III/2021 Sep 2, 2021
@kouralex kouralex moved this from Proposed product backlog items to Selected product backlog items in Sprint Backlog III/2021 Sep 2, 2021
@MikkoAleksanteri MikkoAleksanteri added this to Proposed product backlog items in Sprint Backlog IV/2021 via automation Oct 25, 2021
@MikkoAleksanteri MikkoAleksanteri moved this from Proposed product backlog items to Not finished during previous sprints in Sprint Backlog IV/2021 Oct 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Skosmos Backlog
  
Miscellaneous enhancements and bugs
Sprint Backlog II/2021
  
Selected product backlog items
Sprint Backlog III/2021
  
Selected product backlog items
Sprint Backlog IV/2021
  
Not finished during previous sprints
Sprint Backlog 02/2020
  
Proposed product backlog items
Development

No branches or pull requests

4 participants