11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Pour ceux qui travaillent sur applications web, comment gérer vous les problèmes de CSRF (cross-site request forgering).

J'explique un peu là ou je bloque. J'ai une application web qui fonctionne offline online, la 3G n'étant pas disponible partout je suis à un moment donné obligé de stocker une 'queue task' à reproduire sur le serveur lorsque l'application repasse online. Mais toutes les taches accomplies offline n'ont pas pu être vérifiées, par un token anti-CSRF sur le serveur, donc potentiellement si mon utilisateur offline lis un mail offline et que celui ci, contient une URL malicieuse, j'enregistre dans ma "queue task".

Comment gérez vous çà ?
L'idée est de n'avoir aucune action s'exécutant sur une route (#mon/action), mais seulement à travers des fonctions pouvant être appelées par ton application.

Ensuite, j'imagine que tu peux valider le genre d'action que ton serveur peut entreprendre (car au final, quelqu'un peut bien envoyer les requêtes qu'il veut sur ton serveur).

Mais, j'aimerais plus de détail sur ton exemple problématique, je ne comprend pas ce qui pourrait se produire à ce moment ? Si un email a un lien href="javascript:etc()" ?
Modifié par Vaxilart (19 Jul 2012 - 05:11)
En fait c'est moi qui devait être fatigué, je ne dois pas gérer le mécanisme de session sur une app on/off de la même manière. Online offline peut importe le token reste prisonnier de l'appli, tant que le token n'est pas incorporé dans une route.

Et si mon token est dévoilé, c'est que j'ai un problème de XSS, ou de sniffing (SPDY pourrait être mon grand ami).

Par ailleurs, l'appli devrait fonctionner sur un modèle de type REST. Les actions nuisibles ne pourraient être réalisées que sur du PUT DELETE POST.

Donc un mail contenant :

<a href="http://myApps.tld/get/:id>
Lucie souhaitent t'ajouter comme ami sur TêteDeLivre
</a>


Ne devrait pas être d'une grande incidence.

Reste un problème malgrès tout, l'authentification. Comment s'authentifier Offline ?
rs459 a écrit :
Reste un problème malgrès tout, l'authentification. Comment s'authentifier Offline ?
Stocker les actions, et demander authentification quand l'utilisateur repasse online?
Oui je vois que ça comme solution. Le problème est plutôt, gérer la session coté client, et gêrer son expiration.

Cas d'usage :

Mon utilisateur se rend sur un site en campagne, il démarre son appli, pas de 3G, quel mécanisme d'authentification assez robuste coté client ?

Mon utilisateur perd sa tablette , la session doit expirer. Il la retrouve il doit pouvoir se relogguer offline.

Edit :
Avec un MANIFEST qui remplace le script online , par un script offline. je vais creuser ça.
Modifié par rs459 (19 Jul 2012 - 13:39)
Au risque de dire une connerie :

- L'utilisateur est online, il se loggue
- Il se retrouve offline, il peux faire des actions que tu stockes.
- Il redevient online, il se reloggue, si c'est OK, tu resynchro ses actions avec le serveur.

Maintenant, ça rajoute une grosse complexité à ton appli (sachant que le offline, c'est ultra chiant à gérer).

Tu as vraiment besoin de gérer ce cas? (Je pose la question par simple curiosité)
a écrit :
Tu as vraiment besoin de gérer ce cas?


Et bien en fait, dans l'appli il y aura des prix, des fournisseurs, des docs internes, des infos contrat. Donc des info qui vont être caché (ou pas) en local et lisible offline.

Pour des raisons de sécurité je dois assurer la gestion des sessions même offline.
Enfin c'est pas le use case le plus compliqué :

L'utilisateur se rendant sur un site, doit pouvoir disposé d'un nombre precis de ressource concernant ce même site, en cache.

Au vu du problème orange, tout ce que l'utilisateur aura besoin dans un temps limité à une échelle de 24 heures, devra être présent sur son poste de travail. Smiley lol