L'utilisation
Actuellement, j'essaie de construire une page où les utilisateurs peuvent voter sur du contenu (up/downvote, similaire à la fonctionnalité sur le réseau StackExchange). Mais les utilisateurs ne devraient pas avoir besoin de s'inscrire pour voter sur le contenu. Donc ce serait une sorte de page de vote "anonyme". Elle est construite avec Laravel5 et utilise une base de données MySQL pour stocker les votes. Les sessions utilisateur sont stockées dans des fichiers plats, mais peuvent également être stockées dans une table de base de données (L5 est assez flexible ici).
Le problème
Comment le rendre sécurisé ?.
Je stocke les restrictions et les contenus déjà votés dans les sessions utilisateur, par exemple lorsque l'utilisateur a voté sur le contenu XYZ (ainsi l'utilisateur ne peut pas revoter sur le contenu spécifique pour le moment). Ces restrictions sont basées sur le temps, principalement de 24 à 48 heures. Cela fonctionne bien, tant que l'utilisateur ne supprime pas ses cookies, ce qui créerait une nouvelle session et supprimerait les restrictions de temps, ce qui pourrait entraîner une fraude au vote facile.
Alors, comment éviter que l'utilisateur "perde" sa session ? L'accent est mis sur la manière de maintenir les restrictions et les limitations de chaque utilisateur "anonyme" ! Les PCs partagés ou les votes à différents endroits ne peuvent pas être évités lors du vote anonyme, mais le "botting" ou une fraude au vote en grand nombre doit être évité avec une solution donnée.
Tentatives de solution
Définir l'ID de session de chaque session utilisateur comme une combinaison d'IP et d'User-Agent
J'ai posé une question sur cette tentative (liée ci-dessous), mais cela ouvrirait plus de problèmes que cela en résoudrait (par exemple, un spoofing de session facile). De plus, je n'ai pas réussi à définir manuellement l'ID de session en utilisant Laravel5.
Solutions qui ne conviennent pas
- Demander à chaque utilisateur de s'inscrire (c'est tout simplement trop d'efforts pour chaque utilisateur dans mon cas d'utilisation)