jean-io / moncycle.app

Application de suivi de cycle menstruel pour les méthodes naturelles de régulation de naissance.
https://www.moncycle.app
Other
18 stars 3 forks source link

Nombre de comptes incorrect en réponse à l'appel d'API /pub_stat #27

Closed Limezy closed 7 months ago

Limezy commented 7 months ago

Sur mon instance auto-hébergée, un appel d'API /pub_stat me renvoie un nombre de comptes égal à 0, ce qui semble incorrect (je m'attendais à une réponse 1 pour mon unique compte ou bien 2 en comptant le compte de démo)

jean-io commented 7 months ago

Normal, afin d'éviter les fuites de donnés il y a un arrondi à la dizaine, ainsi sur la base du call /pub_stat on ne peut pas deviner précisément quand les gens s'inscrivent : https://github.com/jean-io/moncycle.app/blob/cda74b19c2b392886aed48f0ae3a6c6d9b2869a3/www_data/api/pub_stat.php#L13C42-L13C61

Si tu souhaites requêter le nombre precis de compte, il vaut mieux passer par /script/stat qui respecte le format de prometheus.io

Limezy commented 7 months ago

Je comprends maintenant, en effet ! Mes connaissances en sécurité informatique sont très basiques, mais par curiosité: y a-t-il vraiment un risque supérieur de fuites de données si une personne malveillante peut savoir en temps réel via l'API quand un nouveau compte a été créé ? Si oui, ce risque n'est-il pas le même pour un compte sur 10 avec l'arrondi actuel ?

jean-io commented 7 months ago

Surveiller cette API permet d’analyser le comportement des gens notamment quand les gens sont actif sur l'app avec le nombre d'observation. C'est d'autant plus vrai sur les petites instances qui ont peu d'utilisateur car on peu plus facilement déduire à quelle compte correspond le comportement. En soit c'est pas grand chose, mais faire un arrondi au dizaine semble un bon compromis d'autant plus que l'information précise est disponible ailleurs.

Limezy commented 7 months ago

Cela a du sens en effet, je suis d'accord. Mais ne pourrait-on pas aller même un cran plus loin en protégeant cette API derrière l'authentification à un (ou plusieurs) comptes qui seraient définis comme comptes administrateurs de l'instance ? (Dans le cas d'une instance auto hébergée via Yunohost, il reste de toutes façons possible de cacher toute l'application moncycle derrière le SSO global) Par ailleurs, je suis impressionné par le nombre d'utilisateurs de moncycle.app qui semble augmenter rapidement ces derniers mois, bravo 🚀

jean-io commented 7 months ago

merci @Limezy pour ton aide et encouragement 😃

Mais ne pourrait-on pas aller même un cran plus loin en protégeant cette API derrière l'authentification à un (ou plusieurs) comptes qui seraient définis comme comptes administrateurs de l'instance ?

L'objectif de ce call API c'est justement que l'information soit publique pour afficher les stats sur le site de présentation de l'app. J'avais plusieurs options comme mettre des chiffres en dur dans site de presentation ou encore modifier l'app SaaS pour qu'elle ait ce call API de plus, j'ai préféré faire comme ça amène plus de transparence. image

Et l’ensemble des données de stats sont dispo dans /script/stat qui pour le coup doit être protégé par un mot de passe.

(Dans le cas d'une instance auto hébergée via Yunohost, il reste de toutes façons possible de cacher toute l'application moncycle derrière le SSO global)

Oui mais l'app est conçu pour ne pas avoir besoin d'être derrière cette barrière même dans une installation perso.

Limezy commented 7 months ago

Tous ces choix ont du sens, je comprends 100% 👍