javascript securty: un appel AJAX pour enregistrer la résolution de l'écran de l'utilisateur, il est possible d'éviter de faux numéros?

StackOverflow https://stackoverflow.com/questions/908283

Question

Ceci est une question de sécurité javascript: supposons une page trouve la résolution de l'écran de l'ordinateur, par exemple 1024 x 768, et que vous souhaitez utiliser un appel AJAX pour connecter ces données dans le DB

.

Y at-il un moyen d'empêcher effectivement des données fausses d'être entré dans le DB? Je pense que quel que soit le code HTML ou Javascript ne, l'utilisateur peut désosser le code de sorte que certains faux numéros sont saisies dans la base de données, ou est-il un moyen empêcher de se produire totalement? (100% sécurisé).

Mise à jour : ou dans une situation similaire ... si j'écris un jeu simple javascript ... est-il un moyen pour l'utilisateur de renvoyer le score par AJAX et mentir sur leur score?

Était-ce utile?

La solution

Si vous commencez avec l'hypothèse que l'utilisateur avec lequel vous communiquez est malveillant, aucune; il n'y a rien que vous pouvez faire pour contrôler les données qu'ils vous passent. Certainement pas avec 100% de certitude -. Dans le pire des cas, ils peuvent utiliser des outils de réseau pour réécrire ou remplacer tout contenu « correct » avec tout ce qu'ils veulent

Si vous voulez juste pour éviter maliciousness occasionnel, vous pouvez chiffrer ou masquer votre code et / ou des données. Cela ne découragera pas un attaquant déterminé.

Si vous avez confiance en fait l'utilisateur réel, mais pensez que d'autres pourraient essayer de les usurper l'identité, vous pouvez utiliser d'autres techniques comme un canari dynamique: envoyer à l'utilisateur un nombre aléatoire, et si elles reviennent le même numéro pour vous, vous savez qu'il est vraiment venu d'eux. (Ou vous être frappé par une attaque man-in-the-middle, mais bon,. C'est ce que SSL est pour)

Autres conseils

Il est impossible d'empêcher les utilisateurs d'envoyer les numéros qu'ils aiment retour de JavaScript.

Je pense que le mieux que vous pouvez faire est de faire une sorte de contrôle sur le côté serveur pour vous assurer que les chiffres envoyés en arrière ressemblent à une résolution réaliste.

Je ne sais pas pourquoi quelqu'un passer le temps d'usurper ces chiffres en premier lieu cependant.

Oui, vous avez raison. Puisque vous utilisez le code côté client, vous devez dire l'ordinateur de l'utilisateur (et donc l'utilisateur) d'une manière ou d'une autre, quel que soit le cryptage ou l'obscurcissement que vous utilisez. Il n'y a pas moyen de contourner cela.

Pour la résolution, il serait essentiellement impossible de déterminer si elle est valide résolution. Ma résolution est généralement envoyée au serveur en 5120 x 1600, ce qui semble assez irréaliste, mais il est parce que les 2 écrans sont souvent envoyés comme 1. Dans le cas contraire, il y a une telle grande variété de possibilités dans les résolutions d'écran et des configurations d'écran, vous d probablement enlever beaucoup de ceux valables, même si elles pourraient être quelques-uns.

Pour le score du jeu, vous pouvez faire des vérifications supplémentaires qui le rendent plus difficile à vérifier. Des choses comme l'envoi de plusieurs avis de la partition tout au long du jeu et nécessitant un nombre X pour faire en sorte que le score reçu est valide. (IE, doit recevoir un 200-300, 400-500, 700-800 et le score final de 1000.) Avec le score final, vous pourriez aussi avoir une sorte de valeur chiffrée qui ne peut être utilisé qu'une seule fois ou qui contient certaines données avec un CRC sur elle. Au fond, à la fin, ont besoin de recevoir d'autres données que juste le score, surtout pour des scores plus élevés.

Pour tenter une réponse en élaborant des observations formulées par Dok, et vous-même, il y a une distinction claire entre la manipulation d'une application à « tricher » hors de quelque chose, que ce soit une entreprise en ligne pour obtenir quelque chose de moins cher ou un MMORPG à obtenir plus d'expérience, que la manipulation de telle manière qu'elle rend l'interface de manière incorrecte et diminue l'expérience globale de l'utilisateur pour ce particulier (hacker?) utilisateur.

Votre temps serait mieux dépensé en se concentrant sur d'autres aspects de votre site. Je ne recommande pas aux utilisateurs de mon site manipuler le code HTML pour le faire paraître drôle sur leurs machines, mais je ne vais pas aller tout et ma sortie de obfusquer serveur pour les empêcher de se blesser. Dans votre cas, aller vérifier par rapport aux valeurs sûres prédéfinies, faisant usage de la DB, pour assurer que l'utilisateur visualise avec une résolution « autorisé » fait peser une charge inutile de votre application, et prend le temps de le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top