Maison  >  Questions et réponses  >  le corps du texte

Que se passe-t-il si j'utilise des milliers de setTimeouts ?

Avoir un site web côté serveur via node.js, à chaque fois que j'actualise la page il génère un nouveau code, je veux détecter si 24 heures se sont écoulées depuis la dernière génération de code, le problème c'est que pour moi de faire ça je besoin de comprendre 24 L'heure est passée, si j'utilise setTimeout() sur l'IP de l'utilisateur, deux problèmes surviennent, le premier est qu'il peut facilement changer son ip et obtenir un nouveau code, ou même redémarrer le routeur et attribuer un nouveau code ip , puisque certains routeurs sont livrés avec des IP dynamiques, le deuxième problème est que étant donné que des milliers d'utilisateurs accéderont au site Web chaque jour ou même toutes les heures avec un tel nombre de setTimeouts, le serveur sera surchargé avec la quantité de mémoire allouée pour setTimeouts seul. J'ai lu comment fonctionnent setTimeouts, ils allouent de l'espace dans le compilateur JavaScript pour s'exécuter à une heure spécifiée, donc mon tas ou ma mémoire seront certainement surchargés avec cela, existe-t-il un meilleur moyen de déterminer si 24 heures se sont écoulées ou non ? Vous n'utilisez pas setTimeout() ?

J'ai essayé de rechercher le même problème mais je n'ai trouvé aucune solution à ce problème, j'ai pensé à utiliser une base de données pour résoudre ce problème mais un autre problème survient car je dois parcourir toute la base de données pour vérifier si l'heure actuelle est 24 que lors de la création du document Quelques heures de plus et une telle boucle prendrait des jours pour se terminer et échouerait si l'API tombe en panne (je la redémarre régulièrement pour mettre à jour les choses)

J'essaie de trouver une solution qui ne casse pas mon serveur en utilisant setTimeouts et qui n'échoue pas si l'API tombe en panne pour une raison quelconque et qui a la possibilité de déterminer si l'utilisateur usurpe l'ips

P粉811349112P粉811349112405 Il y a quelques jours558

répondre à tous(1)je répondrai

  • P粉356361722

    P粉3563617222023-09-11 10:24:42

    Pour résoudre votre problème, vous pouvez utiliser une combinaison de stockage côté serveur et d'horodatages. Voici une approche possible :

    1. Lorsque vous générez un nouveau code, stockez-le avec un horodatage dans une base de données ou une solution de stockage persistante comme Redis.

    2. Lorsqu'un utilisateur visite le site Web, récupérez le dernier code généré et son horodatage depuis le stockage.

    3. Compare l'horodatage actuel avec l'horodatage stocké pour déterminer si 24 heures se sont écoulées depuis la dernière génération de code. Vous pouvez utiliser l'objet Date en JavaScript pour gérer les horodatages.

    4. Si plus de 24 heures se sont écoulées, générez un nouveau code et mettez à jour le code et l'horodatage stockés dans la base de données.

    En utilisant cette approche, vous évitez de nombreux appels setTimeout et vous n'avez pas non plus besoin de parcourir l'intégralité de la base de données pour chaque utilisateur. Au lieu de cela, vous effectuez simplement une simple comparaison des horodatages de chaque visite d’utilisateur.

    En ce qui concerne le problème de l'usurpation d'adresse IP par les utilisateurs, il est difficile de prévenir complètement l'usurpation d'adresse IP, car les utilisateurs peuvent utiliser diverses techniques pour modifier leurs adresses IP. Cependant, vous pouvez mettre en œuvre des mesures de sécurité supplémentaires pour minimiser l'impact de l'usurpation d'adresse IP :

    1. Mettre en œuvre l'authentification des utilisateurs : demander aux utilisateurs de créer un compte et de se connecter pour accéder au site Web. De cette façon, même s’ils changent d’adresse IP, ils ont toujours besoin d’informations d’identification valides pour générer un nouveau code.

    2. Mise en œuvre de la limitation du débit : limitez le nombre de requêtes de génération de code par utilisateur dans un laps de temps spécifique. Cela permet d’éviter les abus et de réduire l’impact de l’usurpation d’adresse IP.

    3. Surveiller les activités suspectes : mettez en œuvre des mécanismes de journalisation et de surveillance pour détecter des modèles ou des comportements inhabituels pouvant indiquer des tentatives d'usurpation d'adresse IP. Vous pouvez configurer des alertes ou des déclencheurs pour vous avertir lorsqu'une activité suspecte est détectée.

    Bien que ces mesures ne puissent pas éliminer complètement la possibilité d'usurpation d'adresse IP, elles peuvent rendre plus difficile pour les utilisateurs d'abuser du système et réduire l'impact de telles tentatives.

    répondre
    0
  • Annulerrépondre