Sécurité AJAX

Le Javascript et XML asynchrone (AJAX) est l'une des dernières techniques utilisées pour développer des applications Web afin de donner une expérience utilisateur riche. Puisqu'il s'agit d'une nouvelle technologie, de nombreux problèmes de sécurité doivent encore être résolus et voici les quelques problèmes de sécurité d'AJAX.

  • La surface d'attaque est plus car il y a plus d'entrées à sécuriser.

  • Il expose également les fonctions internes des applications.

  • Échec de la protection des informations et des sessions d'authentification.

  • Il y a une ligne très étroite entre côté client et côté serveur, d'où la possibilité de commettre des erreurs de sécurité.

Exemple

Voici un exemple pour AJAX Security -

En 2006, un ver a infecté le service de messagerie Yahoo en utilisant XSS et AJAX qui a profité d'une vulnérabilité dans la gestion des événements onload de Yahoo Mail. Lorsqu'un e-mail infecté était ouvert, le ver exécutait son JavaScript, en envoyant une copie à tous les contacts Yahoo de l'utilisateur infecté.

Mains sur

Step 1- Nous devons essayer d'ajouter plus de récompenses à votre ensemble de récompenses autorisé à l'aide de l'injection XML. Voici un aperçu du scénario.

Step 2- Assurez-vous que nous interceptons à la fois la demande et la réponse en utilisant Burp Suite. Paramètres identiques à ceux indiqués ci-dessous.

Step 3- Entrez le numéro de compte comme indiqué dans le scénario. Nous pourrons obtenir une liste de toutes les récompenses auxquelles nous sommes éligibles. Nous sommes éligibles à 3 récompenses sur 5.

Step 4- Maintenant, cliquons sur «Soumettre» et voyons ce que nous obtenons dans le XML de réponse. Comme indiqué ci-dessous, les trois récompenses auxquelles nous sommes éligibles nous sont transmises au format XML.

Step 5 - Maintenant, éditons ces XML et ajoutons également les deux autres récompenses.

Step 6- Maintenant, toutes les récompenses seraient affichées à l'utilisateur pour qu'il les sélectionne. Sélectionnez ceux que nous avons ajoutés et cliquez sur «Soumettre».

Step 7 - Le message suivant apparaît, disant: "* Félicitations. Vous avez terminé cette leçon avec succès."

Mécanismes préventifs

Côté client -

  • Utilisez .innerText au lieu de .innerHtml.
  • N'utilisez pas eval.
  • Ne vous fiez pas à la logique client pour la sécurité.
  • Évitez d'écrire du code de sérialisation.
  • Évitez de créer du XML dynamiquement.
  • Ne transmettez jamais de secrets au client.
  • N'effectuez pas de chiffrement dans le code côté client.
  • N'exécutez pas de logique impactant la sécurité côté client.

Côté serveur -

  • Utilisez la protection CSRF.
  • Évitez d'écrire du code de sérialisation.
  • Les services peuvent être appelés directement par les utilisateurs.
  • Évitez de construire du XML à la main, utilisez le framework.
  • Évitez de créer JSON à la main, utilisez un framework existant.