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 :

{
"firstName": "joHn",
"lastName": " DoE",
"url": "myWebsite.com"
}

... peuvent ĂȘtre converties en :

{
"firstName": "john",
"lastName": "doe",
"url": "https://mywebsite.com"
}

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 :

<img src="not-found" onerror=alert(1)>

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 :

<img src="not-found">

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​