Raphael Robin
J'irai encore plus loin que Laurent : si on utilise les sessions, pourquoi utiliser une clé partagée en plus ? Si un attaquant récupère l'identifiant de session, il n'aura aucun mal à récupérer cette clé !
Jaja
Tout ça ne sert à rien. Il suffit à l'attaquant de récupérer le contenu du champ caché et de le passer dans sa requête AJAX
Gregory
J'utilise ce genre de technique,cependant je ne suis pas certain que le hash seul de la session serveur augmente le niveau de sécurité. Dans tous les cas d'échange de données client-serveur, la règle reste la même : Ne jamais faire confiance aux données du client et toujours contrôler côté serveur l'intégrité des données (ajax ou pas ajax d'ailleurs).
J'aurais tendance à dire que le plus simple serait de sécuriser le transport des données par ssl d'une part pour limiter les possibilités d'attaques de type man in the middle,et d'autre part,peut-être transmettre un jeton crypté à la volée (à partir de la session) à l'aide d'un cryptage à usage unique valide quelques minutes (cf le mécanisme OTP),initié par le serveur lors de la demande de la page principale
Sébastien
Le fait de générer un md5 (ou tout autre encodage) permet de contrôler l'authenticité du nom du champ transmis.
En effet le champ caché peut avoir un attribut name de n'importe quel nom.
Cela évite de générer un champ dont l'attribut name est unique, et facilement repérable par la suite par les moteurs de spam et autres grignoteurs de données.
Si le nom change à chaque accès, il est quasiment impossible de "repérer" un tel champ au sein d'une page
Laurent Dinclaux
Je ne vois pas pourquoi faire un md5 sur la clef... De toute façon si elle est interceptée et retransmise, c'est la version md5 qui sera retransmise et vérifiée pas le serveur et donc elle sera acceptée.
Mais cette approche est intéressante et indispensable pour le requête ajax qui ont pour but de modifier des donnée (ex: soumission de formulaires), elle évite les attaques de type CSRF (http://fr.Wikipedia.Org/wiki/Cross-Site_Request_Forgeries)