18041 sujets
Questions générales et questions de débutants
Je voulais juste avoir le meilleur moyen...
Si c'est l'IP ou localStorage qui sont le mieux, ce n'est pas grave, mais je voulais savoir s'il y en avait d'autre auxquels je n'ai pas pensé...
Merci !
Modifié par js_html (09 Feb 2021 - 18:36)
Si c'est l'IP ou localStorage qui sont le mieux, ce n'est pas grave, mais je voulais savoir s'il y en avait d'autre auxquels je n'ai pas pensé...
Olivier C a écrit :Qu'est-ce que c'est ?
un contrôle de session
Olivier C a écrit :Un peu galère et pénible pour ça...
l'utilisateur soit connecté au site
Olivier C a écrit :Comment peut-il y en avoir le moins ?
Sinon il y aura toujours une possibilité de contournement.
Merci !
Modifié par js_html (09 Feb 2021 - 18:36)
Bonjour,
Effectivement, je n'avais pas compris ça dans sa réponse.
Sauf que le problème est que créer des comptes, c'est compliqué et que dans mon cas, c'est très pénible pour l'utilisateur.
Je souhaite juset effectuer un sondage et LIMITER le fait qu'ils puissent répondre plusieurs fois. Que me conseillerez-vous pour qu'il y ait le moins de possibilités de contournement : IP ? localStorage ? ou autre ?
Merci !
Jean-Pierre-Bruneau a écrit :
Olivier C t'a répondu mais tu semble ne pas comprendre qu'il ne faut jamais ouvrir un site web qui permette d'écrire, ou d'intervenir sans être authentifié, par un login
Effectivement, je n'avais pas compris ça dans sa réponse.
Sauf que le problème est que créer des comptes, c'est compliqué et que dans mon cas, c'est très pénible pour l'utilisateur.
Je souhaite juset effectuer un sondage et LIMITER le fait qu'ils puissent répondre plusieurs fois. Que me conseillerez-vous pour qu'il y ait le moins de possibilités de contournement : IP ? localStorage ? ou autre ?
Merci !
Par fiable, que souhaitez-vous dire ?
Autorisé ? Respectueux ? Possible ? Qui a peu de chances d'être contourné ?
Pensez-vous que mettre une donnée dans localStorage et d'enregistrer l'IP suffissent : s'il y a déjà la donnée dans localStorage, on bloque, si l'IP arrive plus de trois fois, on bloque ?
Merci !
Autorisé ? Respectueux ? Possible ? Qui a peu de chances d'être contourné ?
Pensez-vous que mettre une donnée dans localStorage et d'enregistrer l'IP suffissent : s'il y a déjà la donnée dans localStorage, on bloque, si l'IP arrive plus de trois fois, on bloque ?
Merci !
Bonjour,
Alors voilà la meilleure méthode.
1) tu prends une première feuille de papier
2) tu écris dessus : "je n'essaie pas de faire des combines pour empêcher l'utilisateur de faire ce qu'il veut de sa machine, parce que ça ne marche pas"
3) tu prends une deuxième feuille de papier
4) tu écris dessus : "je passe par mon serveur pour vérifier ce que fait l'utilisateur de mon site, parce qu'il n'y a que ça qui marche"
5) tu affiches les deux feuilles au dessus de ton ordi
Amicalement,
Alors voilà la meilleure méthode.
1) tu prends une première feuille de papier
2) tu écris dessus : "je n'essaie pas de faire des combines pour empêcher l'utilisateur de faire ce qu'il veut de sa machine, parce que ça ne marche pas"
3) tu prends une deuxième feuille de papier
4) tu écris dessus : "je passe par mon serveur pour vérifier ce que fait l'utilisateur de mon site, parce qu'il n'y a que ça qui marche"
5) tu affiches les deux feuilles au dessus de ton ordi
Amicalement,
1) J'ai fait !
2) Il faut écrire ni trop petit ni trop gros...
3) C'est du gaspillage ça, non ?
4)
Ça veut dire quoi ? Je ne comprends pas la signification de cette phrase...
5) Mais on ne voit plus rien du coup, c'est le but ?
Bon ! Non, je rigolais, sauf pour le 4), où je ne comprends vraiment pas...
Mais, mettre une donnée dans localStorage et enregistrer l'IP suffissent : s'il y a déjà la donnée dans localStorage, on bloque, si l'IP arrive plus de trois fois, on bloque, non ? Pourquoi ça ne va pas ?
Merci !
2) Il faut écrire ni trop petit ni trop gros...
3) C'est du gaspillage ça, non ?
4)
parsimonhi a écrit :
je passe par mon serveur pour vérifier ce que fait l'utilisateur de mon site, parce qu'il n'y a que ça qui marche
Ça veut dire quoi ? Je ne comprends pas la signification de cette phrase...
5) Mais on ne voit plus rien du coup, c'est le but ?
Bon ! Non, je rigolais, sauf pour le 4), où je ne comprends vraiment pas...
Mais, mettre une donnée dans localStorage et enregistrer l'IP suffissent : s'il y a déjà la donnée dans localStorage, on bloque, si l'IP arrive plus de trois fois, on bloque, non ? Pourquoi ça ne va pas ?
Merci !
Bonjour,
À chaque fois que le client demande un truc (une page, un fichier, etc.), il s'adresse au serveur, et au niveau du serveur tu peux enregistrer ce que tu veux et envoyer ce que tu veux.
Tu peux certes faire ça. Mais tu peux aussi au niveau du serveur ne pas envoyer une 2e fois le formulaire par exemple (en vérifiant l'IP, ou n'importe quoi d'autre de spécifique au client).
Amicalement,
js_html a écrit :
Bon ! Non, je rigolais, sauf pour le 4), où je ne comprends vraiment pas...
À chaque fois que le client demande un truc (une page, un fichier, etc.), il s'adresse au serveur, et au niveau du serveur tu peux enregistrer ce que tu veux et envoyer ce que tu veux.
js_html a écrit :
Mais, mettre une donnée dans localStorage et enregistrer l'IP suffissent : s'il y a déjà la donnée dans localStorage, on bloque, si l'IP arrive plus de trois fois, on bloque, non ? Pourquoi ça ne va pas ?
Tu peux certes faire ça. Mais tu peux aussi au niveau du serveur ne pas envoyer une 2e fois le formulaire par exemple (en vérifiant l'IP, ou n'importe quoi d'autre de spécifique au client).
Amicalement,
Ah ! Bien sûr, que je vérifierai l'IP grâce au serveur !
- On va sur la page,
- Le PHP vérifie que l'IP n'a pas déjà été enregistré au moins trois fois (si plusieurs membres de la famille sur différents appareils par exemple) et que localStorage est vide.,
- Si c'est bon, ça affiche le formulaire, sinon un message d'erreur,
- Si c'était bon, lors de l'envoi du formulaire, le serveur enregistre l'IP et le JS ajoute un truc au localStorage.
Ça va, comme ça ?
Merci !
- On va sur la page,
- Le PHP vérifie que l'IP n'a pas déjà été enregistré au moins trois fois (si plusieurs membres de la famille sur différents appareils par exemple) et que localStorage est vide.,
- Si c'est bon, ça affiche le formulaire, sinon un message d'erreur,
- Si c'était bon, lors de l'envoi du formulaire, le serveur enregistre l'IP et le JS ajoute un truc au localStorage.
Ça va, comme ça ?
Merci !
Bonjour,
En gros, c'est l'idée. Tu peux même probablement te passer du localStorage.
Tu peux vérifier l'IP et peut-être d'autres infos. Ça dépend des navigateurs et éventuellement des configurations faites par l'utilisateur. Mais dans le cas général, l'IP, c'est déjà ça (surtout pour ce que tu veux faire). Il faut savoir aussi que pour certains, l'IP est changeante.
Amicalement,
En gros, c'est l'idée. Tu peux même probablement te passer du localStorage.
Tu peux vérifier l'IP et peut-être d'autres infos. Ça dépend des navigateurs et éventuellement des configurations faites par l'utilisateur. Mais dans le cas général, l'IP, c'est déjà ça (surtout pour ce que tu veux faire). Il faut savoir aussi que pour certains, l'IP est changeante.
Amicalement,
Bonjour,
$_SERVER
Tu y mettrais quoi ? Un nombre aléatoire que tu ne génères que lors de la 1re connexion ? Ou un timeStamp ? Ou un mixte des deux ?
Autant mettre ça dans un cookie : au moins tu pourras récupérer ce nombre côté serveur plus facilement. Parce qu'envoyer le contenu de localStorage d'une manière ou d'une autre au serveur est une mauvaise pratique (on ne fait qu'alourdir le fonctionnement alors qu'un cookie suffirait).
Amicalement,
Modifié par parsimonhi (01 Feb 2021 - 10:29)
js_html a écrit :
Serait-il possible d'avoir d'autres exemples d'infos ?
$_SERVER
js_html a écrit :
C'était pour ça que je souhaitais ajouter localStorage pour une sécurité de plus...
Tu y mettrais quoi ? Un nombre aléatoire que tu ne génères que lors de la 1re connexion ? Ou un timeStamp ? Ou un mixte des deux ?
Autant mettre ça dans un cookie : au moins tu pourras récupérer ce nombre côté serveur plus facilement. Parce qu'envoyer le contenu de localStorage d'une manière ou d'une autre au serveur est une mauvaise pratique (on ne fait qu'alourdir le fonctionnement alors qu'un cookie suffirait).
Amicalement,
Modifié par parsimonhi (01 Feb 2021 - 10:29)
Tu me conseilles de vérifier s'il y a plusieurs fois la même association de HTTP_USER_AGENT et REMOTE_ADDR (D'ailleurs c'est quoi la différence avec SERVER_ADDR ?) ?
Dans localStorage, je mettrais un item du genre 'connection', qui sera à 1 et, en JS, je vérifierais que 'connection' n'existe pas à la connexion à la page.
Parce que tu imagines que je sais créer un cookie (je sais seulement en cuisine ) ?
Merci !
Dans localStorage, je mettrais un item du genre 'connection', qui sera à 1 et, en JS, je vérifierais que 'connection' n'existe pas à la connexion à la page.
parsimonhi a écrit :
Autant mettre ça dans un cookie : au moins tu pourras récupérer ce nombre côté serveur plus facilement. Parce qu'envoyer le contenu de localStorage d'une manière ou d'une autre au serveur est une mauvaise pratique (on ne fait qu'alourdir le fonctionnement alors qu'un cookie suffirait).
Parce que tu imagines que je sais créer un cookie (je sais seulement en cuisine ) ?
Merci !
Bonjour,
1) REMOTE_ADDR = adresse du client (machine de l'utilisateur), SERVER_ADDR = adresse du server
2) Pour les vérifications, tu bricoles ce que tu veux
Supposons que côté serveur, tu viennes de traiter ton formulaire de sondage. Tu peux alors créer un cookie ayant pour nom "sondage" et pour valeur "1". Il faut de plus spécifier une durée d'expiration. On va supposer que c'est un an. Il faut juste faire attention que ce ne soit pas trop long car sinon on risque de dépasser la valeur max pour un entier : à tester sur ton serveur, s'il fonctionne en 32 bits, il faut pas aller au delà de l'année 2038. Pour vérifier si ton serveur fonctionne en 32 bits ou 64 bits, tu fais un echo de la constante PHP_INT_SIZE. Si c'est 4, c'est en 32 bits, si c'est 8, c'est en 64 bits.
EDIT: si ton serveur est en 64 bits, ce qui est probable, tu peux peut-être aller jusqu'à environ 20 fois l'âge de l'univers (à vérifier car il peut y avoir d'autres facteurs limitants, mais dans tous les cas, tu es tranquille pour le restant de tes jours).
Tu rajoutes alors dans ton code php :
C'est vrai que c'est hyper difficile.
Après, dans ton js, si tu veux voir les cookies relatifs à ta page, il suffit de regarder le contenu de document.cookie.
Amicalement,
Modifié par parsimonhi (01 Feb 2021 - 12:50)
js_html a écrit :
Tu me conseilles de vérifier s'il y a plusieurs fois la même association de HTTP_USER_AGENT et REMOTE_ADDR (D'ailleurs c'est quoi la différence avec SERVER_ADDR ?) ?
1) REMOTE_ADDR = adresse du client (machine de l'utilisateur), SERVER_ADDR = adresse du server
2) Pour les vérifications, tu bricoles ce que tu veux
js_html a écrit :
Parce que tu imagines que je sais créer un cookie (je sais seulement en cuisine ) ?
Supposons que côté serveur, tu viennes de traiter ton formulaire de sondage. Tu peux alors créer un cookie ayant pour nom "sondage" et pour valeur "1". Il faut de plus spécifier une durée d'expiration. On va supposer que c'est un an. Il faut juste faire attention que ce ne soit pas trop long car sinon on risque de dépasser la valeur max pour un entier : à tester sur ton serveur, s'il fonctionne en 32 bits, il faut pas aller au delà de l'année 2038. Pour vérifier si ton serveur fonctionne en 32 bits ou 64 bits, tu fais un echo de la constante PHP_INT_SIZE. Si c'est 4, c'est en 32 bits, si c'est 8, c'est en 64 bits.
EDIT: si ton serveur est en 64 bits, ce qui est probable, tu peux peut-être aller jusqu'à environ 20 fois l'âge de l'univers (à vérifier car il peut y avoir d'autres facteurs limitants, mais dans tous les cas, tu es tranquille pour le restant de tes jours).
Tu rajoutes alors dans ton code php :
setcookie('sondage', "1", time()+3600*24*365);
C'est vrai que c'est hyper difficile.
Après, dans ton js, si tu veux voir les cookies relatifs à ta page, il suffit de regarder le contenu de document.cookie.
Amicalement,
Modifié par parsimonhi (01 Feb 2021 - 12:50)
Re-bonjour,
Zut j'ai oublié de cliquer sur Envoyé ! Je réécris donc :
1/ Merci !
2/ D'accord, je fais ce que je veux !
Effectivement, le code PHP n'est pas trop complexe : je pensais que cela serait beaucoup plus dur !
Cependant, je ne comprends pas "document.cookie" !
Si je mets ça dans ma console navigateur sur ce site, ils m'écrivent "authkey=69c8844e002fd0cfba3i958219b6741d; authid=81417", mais "document.cookie.length" me donne 54. Pourquoi ?
"document.cookie" me donne tous les cookies ?
Et, si je mets juste ce cookie sur mon site, obligatoire, suis-obligé de mettre le bandeau de confirmation de cookie ?
Merci !
Zut j'ai oublié de cliquer sur Envoyé ! Je réécris donc :
1/ Merci !
2/ D'accord, je fais ce que je veux !
Effectivement, le code PHP n'est pas trop complexe : je pensais que cela serait beaucoup plus dur !
Cependant, je ne comprends pas "document.cookie" !
Si je mets ça dans ma console navigateur sur ce site, ils m'écrivent "authkey=69c8844e002fd0cfba3i958219b6741d; authid=81417", mais "document.cookie.length" me donne 54. Pourquoi ?
"document.cookie" me donne tous les cookies ?
Et, si je mets juste ce cookie sur mon site, obligatoire, suis-obligé de mettre le bandeau de confirmation de cookie ?
Merci !
Bonjour,
C'est une chaine de caractères. Il y en a 54.
Oui, il ne faut pas que ce soit trop facile !
S'il s'agit uniquement de cookies techniques du genre "sondage fait", non. S'il y a des données permettant d'identifier l'utilisateur, oui (l'IP en fait partie).
Amicalement,
js_html a écrit :
Mais "document.cookie.length" me donne 54. Pourquoi ?
C'est une chaine de caractères. Il y en a 54.
js_html a écrit :
"document.cookie" me donne tous les cookies ?
Oui, il ne faut pas que ce soit trop facile !
js_html a écrit :
Et, si je mets juste ce cookie sur mon site, obligatoire, suis-obligé de mettre le bandeau de confirmation de cookie ?
S'il s'agit uniquement de cookies techniques du genre "sondage fait", non. S'il y a des données permettant d'identifier l'utilisateur, oui (l'IP en fait partie).
Amicalement,