Sécurisation des requêtes AJAX

10 Décembre 2019

Logo ResourceSpace Logo Wordpress Logo Prestashop Logo Joomla

xAjaxSec est une extension permettant d'ajouter une couche de sécurisation pour les appels AJAX.

Le mécanisme de partage de ressources d'origine croisée (CORS) n'empêche pas l'accès direct à une ressource ayant la même origine/destination. xAjaxSec permet de palier à ce problème en autorisant l'accès aux ressources uniquement via AJAX tout en améliorant la faible observabilité des ressources et des données publiques conçues pour être accessibles sur une page, dans un contexte ou un scénario spécifique (sécurisation par opacification).

Par exemple x interception d'un fichier de données au format JSON (exemples disponibles dans la documentation).

Fonctionnalités

Sécurisation par clé

Une clé est postée lors de la requête AJAX est testée par xAjaxSec. Si la clé n'est pas correcte, la réponse AJAX ne sera pas envoyée.

Vérification du domaine

Une comparaison du domaine défini dans les otpions de contexte (Context settings → http_host), indépendante du mécanisme CORS, avec le domaine de l'URL cible est faite. Si le test de correspondance échoue, aucune réponse AJAX ne sera envoyée.

Rejet des accès directs

Les tentatives d'accès direct à l'URL de la ressource cible retournent une page d'erreur de type 401 (accès non-autorisé). L'URL de redirection est défini par les ID des clés de contexte suivantes, dans cet ordre de priorité :

  • unauthorized_page
  • error_page
  • site_start

Rejet des moteurs de recherches

Rejet actif de l'indexation par les moteurs de recherches de l'URL cible avec l'envoi de l'en-tête PHP :
X-Robots-Tag: noindex, nofollow, noarchive, noimageindex.

Cryptage des réponses

Une option permet de crypter selon le protocole AES (Open SSL doit être installé sur le serveur) les réponses AJAX entre le serveur et le client. Le contenu des réponses sera crypté dans les consoles d'outils de développement (à ne pas confondre avec le protocole https qui peut être utilisé conjointement).