Contexte:
Je conçois le schéma d'authentification pour un service Web REST. Cela n'a pas "vraiment" besoin d'être sécurisé (c'est plus un projet personnel) mais je veux le rendre aussi sécurisé que possible comme une expérience d'exercice / d'apprentissage. Je ne veux pas utiliser SSL car je ne veux pas les tracas et, surtout, les frais d'installation.
Ces questions SO étaient particulièrement utiles pour me lancer:
- Authentification RESTful
- Meilleures pratiques pour sécuriser une API / un service Web REST
- Des exemples des meilleures API Web SOAP / REST / RPC? Et pourquoi les aimez-vous? Et qu'est-ce qui ne va pas avec eux?
Je pense utiliser une version simplifiée de l'authentification d' Amazon S3 (j'aime OAuth mais cela semble trop compliqué pour mes besoins). J'ajoute un nonce généré aléatoirement , fourni par le serveur, à la demande, pour empêcher les attaques par rejeu.
Pour arriver à la question:
S3 et OAuth s'appuient sur la signature de l'URL de demande avec quelques en-têtes sélectionnés. Aucun d'eux ne signe le corps de la requête pour les requêtes POST ou PUT. N'est-ce pas vulnérable à une attaque d'homme au milieu, qui conserve l'URL et les en-têtes et remplace le corps de la demande par toutes les données souhaitées par l'attaquant?
Il semble que je puisse me prémunir contre cela en incluant un hachage du corps de la demande dans la chaîne qui est signée. Est-ce sécurisé?