2010-10-12 5 views
1

J'ai une chaîne HTTP POST que j'exécute à partir d'un programme client cpp sur un serveur exécutant Apache. Voici la chaîne POST qui se tiré des clients:Chiffrement des données HTTP POST

"POST %s HTTP/1.0\r\n" 
"Host: %s\r\n" 
"Content-type: multipart/form-data\r\n" 
"Content-length: %d\r\n\r\n" 
"Content-Disposition: %s; filename: %s\n" 

Ce serait bien si quelqu'un pouvait me aider à comprendre comment pourrais-je chiffrer les données qui se trouve dans le domaine Content-Disposition:. En outre, j'ai remarqué que même si je mets quelque chose hors de propos à la droite de la chaîne POST, comme: "POST %s HTTPGarbage/1.0\r\n", le transfert se produit toujours, il serait grand si je suis également informé de ce comportement.

Merci,
Sayan

+0

Utilisez-vous HTTP ou HTTPS? Votre question est marquée à la fois. – casablanca

+0

Eh bien, je devinais s'il y avait un moyen d'utiliser HTTPS dans le cryptage des données, et donc la balise. – Sayan

+1

En effet, si vous utilisez HTTPS, toutes les données sont automatiquement cryptées. – casablanca

Répondre

3

Si vous utilisez HTTPS (qui est essentiellement HTTP sur SSL/TLS), tout le trafic HTTP sera crypté à partir du moment de la connexion SSL/TLS est établie (à condition que vous êtes en utilisant les suites de chiffrement appropriées), qu'il, avant toute communication HTTP. Seul le certificat du serveur (qui peut révéler le nom d'hôte) sera visible, et peut-être le certificat client dans certaines circonstances (si vous utilisez également l'authentification par certificat client). L'URL et tous les en-têtes HTTP (et le contenu) seront protégés avec SSL/TLS de cette façon.

Si vous n'utilisez pas un navigateur en tant que client, vous pouvez utiliser les bibliothèques SSL/TLS existantes telles que NSS (Mozilla) ou OpenSSL. Assurez-vous de configurer correctement l'approbation du certificat et la vérification du nom d'hôte.

+0

J'ai oublié de dire que vous pourriez être intéressé par quelque chose comme [libcurl] (http://curl.haxx.se/libcurl/c/https.html). – Bruno

+0

En fait, je ne suis pas trop enthousiaste à l'idée d'utiliser des bibliothèques, principalement parce qu'elles augmenteraient la taille (OpenSSL est d'environ 3,5M) du logiciel ... il suffit de transférer un seul gros fichier par client vers un serveur (les données sont également pas supersensible), aucune prise de contact d'accréditations impliquée. Je pense à écrire un cryptage simple et personnalisé qui fonctionnerait la plupart du temps. – Sayan