L'exploitation du JavaScript eval() la méthode
De nombreux développeurs croire que JavaScript est eval()
méthode doit être évitée. Cette idée fait sens à partir d'une conception de point de vue. Il est souvent utilisé comme un vilain solution de contournement lors de la plus simple, la meilleure option est disponible.
Cependant, je ne comprends pas les préoccupations au sujet des failles de sécurité. Certes, l'exécution de eval()
donne le pirate la possibilité d'exécuter n'importe quel code JavaScript que vous pouvez exécuter.
Mais ne peuvent-ils pas le faire de toute façon? Dans Chrome, au moins, les Outils de développement permettent à l'utilisateur d'exécuter leurs propres JavaScript. Comment est eval()
plus dangereux que les Outils de développement?
eval
. Le "eval est mal" n'est sans doute jamais dit aujourd'hui, par des codeurs expérimentés. Si vous êtes stupide, cela peut être dangereux. Mais habituellement, c'est juste lent, moche et entraînant dur d'évoluer code.Maintenant, je ne vois pas comment cette question peut recevoir une bonne réponse...
OriginalL'auteur Jared Nielsen | 2013-08-12
Vous devez vous connecter pour publier un commentaire.
B-Con mentionné, l'agresseur n'est pas celui qui est assis à l'ordinateur pourrait être à l'aide de la
eval()
déjà dans votre script comme un moyen de passer d'un code malveillant sur votre site, afin d'exploiter la session de l'utilisateur actuel d'une certaine manière (par exemple, un utilisateur suit un lien).Le danger de
eval()
, c'est quand il est exécuté sur unsanitised valeurs, et peut conduire à une DOM Basé XSS vulnérabilité.par exemple, considérons le code suivant dans votre code HTML (plutôt tiré par les cheveux, mais il démontre la question je l'espère)
Maintenant, si la chaîne de requête est
?foo
vous obtenez simplement une boîte de dialogue d'alerte indiquant ce qui suit:Your query string was ?foo
Mais ce que ce code permet à un utilisateur de faire est de rediriger les utilisateurs à partir de leur site à une URL telle que
http://www.example.com/page.htm?hello%22);alert(document.cookie+%22
, où http://www.example.com votre site web est.Cela modifie le code qui est exécuté par
eval()
à(Nouvelles lignes ajoutées par moi pour plus de clarté). Maintenant, cela pourrait être en train de faire quelque chose de plus malin que de montrer l'actuelle valeur de cookie, comme le code nécessaire est tout simplement passé sur la chaîne de requête par l'attaquant du lien dans une forme codée. Par exemple, il pourrait être l'envoi du cookie pour l'attaquant du domaine dans une demande de ressource, permettant à la session d'authentification à être détourné.
Cela s'applique à n'importe quelle valeur de l'utilisateur/entrée externe qui est unsanitised et exécutée directement dans la
eval()
, non seulement la chaîne de requête, comme illustré ici.eval()
permis de piratage dans le site lui-même, plutôt que de laisser à d'autres sites pour gratter les données de l'utilisateur.Pas directement, mais elle pourrait faire si un utilisateur admin a été ciblée.
OriginalL'auteur SilverlightFox
Un attaquant qui n'a pas accès au navigateur de l'utilisateur Outils de développement. L'attaquant n'est probablement pas l'utilisateur assis devant l'ordinateur.
Le danger de
eval()
est qu'un attaquant peut être en mesure de manipuler des données éventuellement courir à traverseval()
par d'autres moyens. Si leeval()
'd chaîne vient d'une connexion HTTP, l'attaquant peut effectuer une attaque de type MITM et modifier la chaîne. Si la chaîne vient de stockage externe, l'attaquant peut avoir manipulé les données dans l'emplacement de stockage. Etc.eval
. Si ils font MITM, ils peuvent modifier les non-evaled JS charge utile tout aussi facilement.Un autre exemple classique est
eval
ing OBTENIR des variables est un moyen facile d'ouvrir XSS trous. Etc.OriginalL'auteur B-Con