Validation, Canonicalization, Escaping & Sanitization
Toutes les propriétés échangées avec l’API ReST doivent être validées par l’API.
La validation doit également être implémentée côté client pour éviter les aller-retours inutiles.
La validation Clien-Side n'est pas suffisante

Canonicalization

L’API ReST doit convertir les données reçues vers leur forme canonique ou les rejeter.
Par exemple, les données suivantes :
1
{
2
"firstName": "joHn",
3
"lastName": " DoE",
4
"url": "myWebsite.com"
5
}
Copied!
... peuvent être converties en :
1
{
2
"firstName": "john",
3
"lastName": "doe",
4
"url": "https://mywebsite.com"
5
}
Copied!

Escaping

Ce n’est pas à l’API ReST de gérer l’escaping du contenu.
Par exemple, sur un blog, le commentaire suivant est cohérent :
1
<img src="not-found" onerror=alert(1)>
Copied!
C’est au client de gérer l’escaping est d’éviter les attaques de type XSS.

Sanitization

La sanitization est un jeu dangereux qui consiste à retirer le contenu potentiellement malicieux.
Pour l’exemple précédent, cela consisterait à retirer la partie onerror :
1
<img src="not-found">
Copied!
Mais encore une fois, il s’agit d’une problématique client.
La difficulté est qu’il est toujours possible de trouver des techniques pour bypass la sanitization. Certains en ont fait leur métier 😉 http://n0p.net/penguicon/php_app_sec/mirror/xss.html
Dernière mise à jour 2yr ago