Sécurité avec AJAX : vos scripts sont-ils sûrs?

Ajax!AJAX c’est super, tout le monde en veut pour son site Web 2.0.

Le problème c’est qu’on s’intéresse plus souvent au côté purement fonctionnel qu’à la performance… ou au côté sécurité…

En fait, à moins de mettre en place des contrôles, AJAX ne fait pas la différence entre une requête XMLHttpRequest faite via le script ou une requête bidon appelée par un script externe au site d’origine.

D’où une liste de points à vérifier lors de la conception de sites basés sur AJAX:

  • Méthode GET : à éviter! N’importe qui peut modifier une querystring et bonjour les problèmes classiques d’échappements de chaînes, de vérification syntaxiques, etc…
    Comme dans toute appli Web, faut être un peu parano: POST est votre ami 🙂
  • user-agent : est-ce bien IE ou Firefox qui se sert du script? Penser à restreindre l’accès par exemple. Encore une fois c’est une précaution de principe car certains scripts peuvent « spoofer » un user-agent.
  • referrer : une bonne idée serait de bloquer toute requête émanant d’un site différent de l’origine.
  • Cookies : miam!
  • Traffic web : vérifiez d’où viennent les requêtes pour identifier les mauvais plaisants et sécuriser votre AJAX!
  • Codez vos requêtes avec des identifiants uniques mais valides 🙂

Sur ce, bon dev!
Un très bon article de darknet.org résume la situation:

Darknet: Ajax – Is your application secure enough? English

Auteur/autrice : Julien Coquet

Expert de la mesure d’audience sur Internet depuis plus de 15 ans, Julien Coquet est consultant senior digital analytics et responsable produit et évangélisation pour Hub’Scan, une solution d’assurance qualité du marquage analytics. > A propos de Julien Coquet

5 réflexions sur « Sécurité avec AJAX : vos scripts sont-ils sûrs? »

    1. En gros si le referrer du site n’est pas dans une liste approuvée, on ne déclenche pas l’appel AJAX.

      var _dr = document.referrer;
      var _re = /(monsite|autresite)/gi; // on rentre la liste des domaines autorisés
      if(_dr.match(_re)){
      // le referrer correspond à la liste
      // on fait des trucs avec AJAX
      }

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.