Question

J'ai créé une application qui utilise jQuery et JSON pour utiliser un service Web ASP.NET .asmx afin d'effectuer des opérations crud. L'application et .asmx sont sur le même domaine. Les personnes qui consomment les opérations de lecture du fichier .asmx à distance ne me dérangent pas mais ne veulent pas que les gens suppriment des choses au hasard!

Je peux diviser les méthodes que je souhaite être accessibles au public et les méthodes "cachées" en 2 services Web. Comment verrouiller les appels du service Web 'hidden'.asmx vers le même domaine que celui hébergé?

Merci d'avance.

Modifier: Quelqu'un peut-il commenter cela, semble plausible (source: http: // www .slideshare.net / simon / présentation-de-histoires-d'horreur-de-sécurité-): Ajax peut définir des en-têtes HTTP, les formes normales ne peuvent pas. Les demandes Ajax doivent provenir du même domaine.

So "x a demandé-avec" "XMLHttpRequest" les demandes doivent provenir du même domaine.

Était-ce utile?

La solution

Il existe deux scénarios que vous devez sécuriser avec des services Web:

  1. L'utilisateur est-il authentifié?
  2. L'action provient-elle de ma page?

La pièce d'authentification est déjà prise en charge si vous utilisez l'authentification par formulaires. Si votre service Web se trouve dans une zone du site protégée par l'authentification par formulaires, personne ne pourra accéder à vos services Web à moins d'être connecté.

Le deuxième scénario est une histoire un peu plus compliquée. L'attaque est connue sous le nom de CSRF ou XSRF (Cross Site Request Forgery). Cela signifie qu'un site Web malveillant effectue des actions pour le compte de votre utilisateur alors qu'il est toujours connecté à votre site. Voici un excellent article sur XSRF .

Jeff Atwood résume en quelque sorte le lien ci-dessus, mais voici la protection XSRF en quatre étapes:

  1. Ecrivez un GUID dans le cookie de votre utilisateur.
  2. Avant votre appel AJAX, lisez cette valeur dans le cookie et ajoutez-la. au service Web POST.
  3. Côté serveur, comparez la valeur FORM avec la valeur du cookie.
  4. Les sites ne pouvant pas lire les cookies d'un autre domaine, vous êtes en sécurité.

Autres conseils

Dans AJAX, le navigateur effectue les appels. Ainsi, même si vous deviez vérifier que le domaine est identique, il ne serait pas suffisamment sécurisé, car il peut facilement être falsifié.

Vous devez utiliser une sorte de jeton d’authentification (de préférence avec une pause) pour assurer la sécurité.

La solution rapide et incorrecte consisterait à utiliser des restrictions d'adresse IP pour autoriser uniquement l'accès aux adresses IP de votre domaine via IIS.

Il serait probablement préférable d'utiliser l'authentification HTTP. Il existe de nombreuses façons de procéder. L'authentification dans les services Web ASP.NET est une présentation utile. .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top