4 Stimmen

Wie kann ich eine öffentliche ASMX-Seite schützen, die wichtige Daten in meine Datenbank überträgt?

Ich habe eine Website in Entwicklung mit mehreren Webdiensten (ASMX), die wichtige Daten an meine Datenbank senden. Wenn ich in meinem Browser zu der ASMX-Datei navigiere, kann ich das Formular mit den Parametern ausfüllen und an die Datenbank senden. Wenn jemand die URL zu meinem WS findet, kann er meine Datenbank stark verändern. Ich möchte verhindern, dass jemand öffentlich in meinen WS posten kann. Bisher sind mir zwei Dinge eingefallen, die helfen könnten, aber ich würde gerne wissen, ob es noch andere Möglichkeiten gibt:

  • Prüfen, ob der HTTP-Referrer zur WS-Methode die Domäne ist, in der sich der WS befindet
  • Fügen Sie einen zusätzlichen Parameter namens Schlüssel zu allen wichtigen WS-Methoden und lassen Sie dies ein verschlüsseltes "Passwort" sein. Dann verschlüsseln Sie mein gespeichertes Passwort auf der WS-Seite und vergleichen, ob die Schlüssel übereinstimmen.

Wenn es noch andere bewährte Verfahren oder Techniken gibt, die ich zur Sicherung meiner WS einsetzen kann, teilen Sie sie bitte mit!

2 Stimmen

Vergessen Sie nicht, HTTPS anstelle von HTTP zu verwenden, wenn Sie sich für den Schlüsselparameter entscheiden. Unverschlüsselte Daten (auch ein "verschlüsseltes" Passwort) können von anderen Personen ausgespäht und wiederverwendet werden.

6voto

GrayWizardx Punkte 17771

Einige davon könnten für Sie hilfreich sein:

Bitte beachten Sie auch, dass die Test-Webseite (die Beispiel-Tetboxen zeigt) nur vom lokalen Rechner aus zugänglich sein sollte; wenn sie von anderen Rechnern aus sichtbar ist, liegt wahrscheinlich ein Konfigurationsproblem vor.

1voto

Reza Punkte 181

Wenn sich der Verweiser in derselben Domäne befindet, wäre es ein einfacher Weg, ein Cookie auf der verweisenden Seite zu setzen und dann zu prüfen, ob das Cookie in der ASMX vorhanden ist (sowie alle anderen Prüfungen, die Sie durchführen möchten). Beachten Sie, dass die Domäne dieselbe sein muss, sonst funktioniert diese Technik nicht.

1voto

AaronS Punkte 7389

Am einfachsten ist es, die Testseite einfach zu deaktivieren. Dazu fügen Sie in der web.config Ihres Webdienstes Folgendes hinzu:

<webServices>
<protocols >
<remove name="HttpGet"/>
<remove name="HttpPost"/>
<remove name="HttpPostLocalhost"/>
</protocols> 

Außerdem ist hier ein anständiger Artikel über andere Möglichkeiten zur Sicherung Ihres Webdienstes, einschließlich des Hinzufügens von Authentifizierung in den Soap-Header.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X