Sécurité des requêtes Ajax

Ajax, Sécurité

Publié par Redacteur, le 19 mars 2008.
Sécurité des requêtes Ajax

Phase 1
Dans un premier temps utiliser les sessions serveur en fonction de la plate-forme (PHP / JAVA / ...).

La page servie qui s'affiche au client doit coté serveur générer une clef (alphanumérique par ex. de 10 à 20 caractères). Affecter cette clef à une variable de l'espace de session:
$_SESSION['Env_UserSession']['AjaxKey'] = $la_clef_alphanum

Phase 2
Coté client, la clef devra être disponible via javascript. Elle pourra être une valeur d'un champ caché par exemple. (Le script serveur devra l'écrire dans le champ ou l'affecter à une variable javascript)

Phase 3
Lors de la requête Ajax, récupérer cette clef et la transmettre aux paramètres Ajax (aux arguments paires de la requête en réalité)

Phase 4
Lorsque la requête est lancée, le principe est de contrôler coté serveur l'existence de cette clef, et la vérifier avec celle stocké en session.
Celle-ci doit être contrôlée avant de servir (générer) le contenu Ajax au client.

Pour aller encore plus loin, je propose de générer un champ input de type hidden (en Phase 2). Ce champs aura pour nom (attribut name) le hachage en md5 de la clef. La valeur de champs pourra être ce que vous désirer !

Lors du contrôle coté serveur (Phase 4) contrôler bien l'existence POST ou GET d'un argument dont la variable correspond au md5 de la clef stockée en session. (S’assurer bien sûr qu'elle existe sinon c'est qu'elle est vide, donc une tentative de contournement ou de vol en est la cause...)

Si c'est le cas et qu'elles sont identiques, vous pouvez à ce moment livrer votre contenu ou le générer.

Votre requête est donc à présent sécurisée. Je vous laisse le soin d'étudier les échanges serveur / client afin d'optimiser cette astuce ;)

1 Commentaire

IncludE a écrit le 05 mai 2008 (00:07:47)

Implémentation setContent pour "PlopBox" - l'après brief ;)

Une petite implémentation pour PlopBox [ setContent() ] qui perment de définir un contenu html directement pour l'affichage d'un bloc de code simple ou complexe ...

    22 05 2008. Il est 22:27:44