API REST ThingWorx > Mise à jour de la méthode de requête et filtrage du type de contenu pour la protection CSRF
Mise à jour de la méthode de requête et filtrage du type de contenu pour la protection CSRF
Les attaques CSRF (Cross-Site Request Forgery) ou par falsification de requête intersites sont des attaques Web consistant à faire émettre des requêtes falsifiées par une victime à son insu. Si un utilisateur est authentifié à un site et qu'il est possible de le piéger pour qu'il émette une commande malveillante, l'attaquant peut émettre une requête de changement d'état en utilisant les informations d'identification de la victime.
Pour plus d'informations, consultez les liens suivants (en anglais) :
Une moyen courant de se protéger des attaques CSRF consiste à utiliser des jetons synchronisés. ThingWorx utilise toutefois une méthode différente : toutes les requêtes doivent traverser un filtre de type de contenu strict. Cette approche fournit le même niveau de sécurité en plus d'être mieux adaptée aux implémentations sans état.
Mettre à jour la méthode de requête
Par défaut, la méthode de requête ne peut pas être modifiée par les paramètres de requête. Si votre application a été développée de cette manière, vous pouvez prendre les mesures suivantes :
Supprimez tout code qui transformera une méthode GET en une méthode POST via les paramètres de requête. Il s'agit de la bonne pratique recommandée.
Définissez la valeur Autoriser les changements de méthode de demande dans la configuration du Sous-système de plateforme sur true (Vrai).
* 
Cette méthode n'est pas la bonne pratique recommandée. En l'appliquant, vous reconnaissez exposer votre implémentation/application à de potentielles attaques CSRF.
L'option Autoriser les changements de méthode de demande est obsolète et sera supprimée des futures versions de ThingWorx.
Filtrage du type de contenu
Le ContentTypeFilter a été implémenté pour vérifier que le type de contenu dans l'en-tête des requêtes est bien application/json, application/xml ou text/xml pour toutes les méthodes POST, PUT et DELETE. Si la requête est de type multipart/form-data, le filtre recherche un en-tête X-XSRF-TOKEN avec une valeur TWX-XSRF-TOKEN-VALUE. Les requêtes de ce type sont dédiées au chargement de fichiers.
Si vous effectuez des chargements de fichier, votre navigateur doit implémenter l'objet FormData.
* 
FormData n'étant pas disponible dans les navigateurs plus anciens (Internet Explorer 9 et versions antérieures), le chargement de fichier (y compris les importations d'entités et d'extensions) ne fonctionnera pas dans ces navigateurs lorsque le ContentTypeFilter est inclus.
* 
Il est possible de désactiver l'option Filter Content-Type dans le Sous-système de plateforme. En la désactivant, vous reconnaissez exposer votre implémentation/application à de potentielles attaques CSRF.
L'option Filter Content-Type est obsolète et sera supprimée des futures versions de ThingWorx.
Bonnes pratiques en matière de protection CSRF
Respectez les directives suivantes afin de maintenir une protection CSRF :
Lorsque vous développez de nouvelles applications, toutes les applications composites générées dans Composer sont sécurisées. Si vous utilisez une interface utilisateur personnalisée qui accède à ThingWorx via l'API REST, vérifiez que vous n'incluez aucune requête nécessitant un changement de méthode.
Lorsque vous développez de nouvelles extensions Java, vérifiez que tous les nouveaux services sont exposés dans le framework d'annotation de service ThingWorx. Ce framework est chargé d'identifier et de mapper toutes les requêtes entrantes ainsi que de les router vers l'implémentation d'un service. Tous les services créés et exposés à l'aide des annotations de service de ThingWorx seront protégés contre les attaques CSRF.
Dans les cas rares où un nouveau service ne doit pas être soumis au framework d'annotation de ThingWorx, veillez à ce qu'il réagisse uniquement aux méthodes GET, POST, PUT ou DELETE.
Rubriques connexes