Frage

Ich habe eine Anwendung erstellt, die jQuery und JSON verwendet eine ASP.NET ASMX Web-Service zu konsumieren zu crud Operationen durchzuführen. Die Anwendung und .asmx sind auf der gleichen Domain. Ich nicht Leute Geist der Ferne die Leseoperationen des .asmx aufwendig, aber nicht wollen, Menschen wahllos Sachen zu löschen !!!

kann ich die Methoden gespalten i öffentlich zugänglich sein möchten und die ‚versteckten‘ diejenigen in 2 Web-Services. Wie kann ich sperren Anrufe an die ‚hidden'.asmx Webservice der gleichen Domäne, die seine Gastgeber in?

Vielen Dank im Voraus.

Edit: Kann jemand dazu etwas sagen, scheint plausibel (Quelle: http: // www .slideshare.net / simon / web-security-Horror-Geschichten-Präsentation ): Ajax festlegen können HTTP-Header, normale Formen kann nicht. Ajax-Anfragen aus der gleichen Domäne sein muss.

So "x-requested-mit" "XMLHttpRequest" Anfragen aus der gleichen Domäne sein muss.

War es hilfreich?

Lösung

Es gibt zwei Szenarien, die Sie mit Web-Services sichern müssen:

  1. Ist der Benutzer authentifiziert?
  2. Ist die Aktion von meiner Seite kommt?

Das Authentifizierungs Stück ist bereits gesorgt, wenn Sie die Formularauthentifizierung verwenden. Wenn Ihr Web-Service in einem Formularauthentifizierung-geschützten Bereich der Website sitzt, wird niemand in der Lage sein, Ihre Web-Services zugreifen, wenn sie angemeldet sind.

Das zweite Szenario ist eine etwas knifflige Geschichte. Der Angriff wird als CSRF oder XSRF (Cross Site Request Forgery) bekannt. Dies bedeutet, dass eine bösartige Webseite Aktionen im Namen Ihres Benutzers durchführt, während sie immer noch auf Ihrer Website angemeldet. Hier ist eine große Zuschreibung auf XSRF .

Jeff Atwood Art bringt es in dem obigen Link, aber hier ist XSRF Schutz in vier Schritten:

  1. Schreiben Sie eine GUID zu Ihrem Benutzer-Cookie.
  2. Bevor Sie die AJAX-Aufruf, lesen Sie diesen Wert aus dem Cookie und es hinzufügen an den Webservice POST.
  3. Auf der Serverseite, vergleichen Sie den FORM-Wert mit dem Cookie-Wert.
  4. Da Websites keine Cookies von einer anderen Domäne lesen können, sind Sie sicher.

Andere Tipps

In AJAX der Browser macht die Anrufe, so dass selbst wenn Sie überprüfen waren, dass die Domain gleich ist es sicher genug sein würde nicht, weil es leicht gefälscht werden kann.

Sie brauchen eine Art von authetication / autharization Token verwenden (vorzugsweise mit einer Auszeit) um die Dinge sicher.

Schnelle und schmutzige Lösung wäre, die IP-Adresse Einschränkungen verwenden nur die IP-Adresse Ihrer Domain Zugriff über IIS zu ermöglichen.

Wahrscheinlich wäre besser HTTP-Authentifizierung. Es gibt viele Möglichkeiten, dies zu tun, fand ich Authentifizierung in ASP.NET Web Services eine hilfreiche Übersicht .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top