Disons que mon javascript fait une requête ajax et dans la fonction de rappel il fait eval (response_text) sans vérifier le texte de réponse pour quoi que ce soit. Quelque chose me dit que ce n'est pas bon, mais pourquoi et comment pourrait-il être epxloited? Ne sera-ce pas toujours mon serveur qui lui enverra de bonnes données?S'agit-il d'une sécurité de sécurité, XSS ou CSRF?
Répondre
Cela serait vulnérable à un XSS s'il provient d'une source non fiable. L'attaquant peut appeler une fonction sur votre site. Pensez à une situation où l'attaquant ajoute une balise de script au document qui charge un script à partir de son site.
Que se passe-t-il si l'eval (response_txt + "(const_argu)") le rsponse_text est cat'ed avec une chaîne constante comme argument pour eval? – rapadura
Cela pourrait encore être exploité étant donné que response_txt est un texte arbitraire. Si vous faites entièrement confiance à la source de response_txt, vous risquez probablement de vivre avec le risque. par exemple. si response_txt = "something_malicious(); what_you_want" ce que vous obtenez est eval ("something_malicious(); what_you_want (const_argu)"). mais vous pouvez facilement valider le texte de la réponse s'il s'agit strictement d'une chaîne alphanumérique avec éventuellement un caractère de soulignement. – partoa
Vous ne devriez pas suivre cette pratique ... renvoyer quelque chose qui vous aide à décider quel code à exécuter sur le côté client, pas le code lui-même. – kapa