OBTENEZ vs POST dans Services Web REST
Je suis dans le processus de développement d'un service REST qui permet à un utilisateur de réclamer leur cotation basée sur un couple d'éléments d'information qui apparaissent sur leur facture (numéro de la facture et de la facturation zip).
J'ai lu de nombreux articles et de Dépassement de Pile questions sur l'utilisation de GET et quand utiliser la POSTE. Dans l'ensemble, le consensus général est que GET devrait être utilisé pour la quantité d'opérations et de POST doit être utilisé pour des opérations de créer quelque chose sur le côté serveur. Toutefois, cet article:
http://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post
m'a amené à remettre en question l'utilisation de GET pour ce scénario particulier, simplement en raison du fait que je suis en utilisant ces 2 éléments d'informations comme un mécanisme permettant de valider l'identité de l'utilisateur. Je ne suis pas la mise à jour de quoi que ce soit sur le serveur à l'aide de cet appel de méthode, mais je n'ai pas forcément envie d'exposer les informations dans l'URL.
C'est un interne du service web et seul le front-end qui appelle le service est exposé publiquement, donc je n'ai pas à vous soucier de l'adresse URL affichée dans le navigateur d'un utilisateur de l'histoire. Mon seul souci serait le cas peu probable que quelqu'un gain journal du serveur d'accès, auquel cas, j'aurais plus de problèmes.
Je suis penchée vers la POSTE pour des raisons de sécurité; cependant, se sent comme la bonne méthode, en raison du fait que la demande est idempotent. Quelle est la méthode recommandée dans ce cas?
OriginalL'auteur Luke | 2013-04-16
Vous devez vous connecter pour publier un commentaire.
Indépendamment de POST vs REÇOIS, je recommanderais de ne PAS baser votre sécurité en tant que quelque chose d'aussi simple que d'un code postal et un numéro de facture. Je parierais sur le fait que les numéros des factures séquentiel (ou presque), et il n'y a pas que de nombreux codes postaux autour - voilà, j'ai eu un accès complet à vos listes.
Si vous utilisez une autre méthode d'authentification (généralement dans l'en-tête HTTP), alors vous êtes bon il n'a pas d'importance si vous avez un numéro de facture si l'URL, donc autant utiliser OBTENIR.
Si vous n'êtes pas, alors je suppose que le POST n'est pas aussi mauvais que d'OBTENIR en terme d'exposition des contenus confidentiels.
OriginalL'auteur ptyx
Il n'y a pas vraiment plus de sécurité dans un POST vs un GET. Bien sûr, la demande n'est pas dans l'URL, mais le REPOS dont nous parlons ici, et l'URL de ne pas être vu par un homme de toute façon.
Certaines personnes font l'argument que le POST est plus sûr, car les serveurs web du journal des URLs et de la fuite de données à un lieu n'était pas destiné à être. Je ne pense pas vraiment que c'est une préoccupation pratique, mais la théorie est là.
Bon point. Bien, en tout cas vous avez certainement ne devriez pas envoyer les mots de passe avec un GET. 🙂
ce n'est pas
GET
qui est le problème, c'est non garantie de requêtes HTTP.OriginalL'auteur Lennart Regebro
Vous la question commence avec un peu de mauvais a priori. Tout d'abord,
GET
n'est pas juste pour une vieille idempotent de l'opération, c'est pourGET
ting des ressources du serveur; il se trouve simplement que cela devrait être dépourvu d'effets secondaires. Deuxièmement, l'URL n'est pas la seule façon pour une requête GET pour envoyer des données au serveur, vous pouvez utiliser une charge utile avec unGET
demande (au moins autant que HTTP, certaines implémentations sont mauvais et ne prennent pas en charge cette ou rendre difficile). Troisièmement, comme l'a souligné, vous avez choisi une terrible champs de données pour sécuriser vos accès. Enfin, vous êtes en utilisant un simple texte du protocole de toute façon, de sorte qu'aucune méthode n'offre vraiment et une meilleure sécurité.Vous devez utiliser le verbe qui décrit le mieux ce que vous faites, vous obtenez des informations sur le serveur, afin de l'utiliser
GET
. L'utilisation appropriée de la sécurité, de base tels que le cryptage HTTPS. Si vous voulez éviter ces champs de "l'obstruction" de l'URL, vous pouvez envoyer les données de la charge utile de la demande, quelque chose comme:OriginalL'auteur thecoshman