2012-07-13 3 views
1

J'ai essayé de suivre de bonnes pratiques d'API RESTful lors de leur conception. L'un d'entre eux qui se trouve être très simple et commun ne cesse de se difficile à suivre:API REST, verbes HTTP et JOURNAUX D'ACCES

  • Utilisez GET verbe http pour récupérer les ressources

Pourquoi? Considérez-vous un URI pour obtenir des informations de compte comme ceci:

AXY_883772 est un identifiant de compte dans un système bancaire. Audit de sécurité soulèvera un avertissement indiquant que:

  1. ID de compte apparaîtra sur l'accès HTTP JOURNAUX
  2. ID du compte peut se cache sur l'histoire du navigateur (même si il est peu probable d'utiliser un navigateur régulièrement pour accéder à un RESTful API)

Et ils finissent par "recommander" que verbe POST devrait être utilisé à la place.

Alors, ma question est:

Que pouvons-nous faire à ce sujet? Il suffit de suivre les recommandations de sécurité et éviter d'utiliser GET la plupart du temps? Utiliser une sorte de configuration spéciale du journal d'accès APACHE/IIS/NGINX pour éviter de consigner l'accès à certaines URL?

+0

Je dirais ne pas écrire RESTful quand il ne s'applique pas à votre projet. – kapa

Répondre

2

Si vous avez des informations sensibles dans vos URL et que vous consignez des URL, vous consignez des informations sensibles.

Donc, il y a deux solutions évidentes:

  • Ne pas enregistrer l'url
  • utiliser une URL différente qui ne contient pas les informations sensibles

Le dernier pourrait être mis en œuvre par en utilisant un identifiant (différent) que votre serveur mappe à l'identifiant normal.

Si aucune de ces solutions n'est une option pour vous, vous ne pouvez pas utiliser GET et donc ce n'est pas une bonne conception RESTful.

Je réalise que toutes ces choses sont probablement déjà évidentes pour vous; Mais c'est la réponse la plus précise que je puisse donner.

Cela ne vaut rien que cela ne s'applique pas seulement à GET, ce serait aussi le cas pour PUT, DELETE et souvent POST.