Hii,
Ich habe eine Abfragezeichenfolge wie " Ссылка ". Die Operation wird nicht ausgeführt, wenn der Parameter 'userID' manuell geändert wurde. Wie ist das möglich?
Hii all, danke für deine Hilfe ... und ich habe eine Art Lösung von anderen Seiten. Ich weiß nicht, dass das die beste Lösung ist. das heißt, den Wert mit einem Verschlüsselungs- und Entschlüsselungsalgorithmus zu verschlüsseln ... Der Beispielcode wurde so geschrieben ...
%Vor% %Vor%Rufen Sie beim Laden der Seite 'Page1' den Dekodierungsalgorithmus auf, um die Abfragezeichenfolge zu dekodieren
%Vor% %Vor%Es klingt wie eine seltsame Anforderung. Versuchen Sie, eine Art von Sicherheit in Eigenregie zu implementieren? Wenn es so ist, solltest du wirklich nicht.
Wie auch immer, eine Möglichkeit wäre, die gesamte URL http://project/page1.aspx?userID=5
zu nehmen und ihre md5 summe . Dann fügen Sie die md5-Summe an die letzte URL an, z. B. http://project/page1.aspx?userID=5&checksum=YOURCALCULATEDMD5SUM
. Dann müssen Sie in page1.aspx überprüfen, dass der Prüfsummenparameter korrekt ist.
Allerdings ist dieser Ansatz ziemlich naiv und es würde nicht lange dauern, bis jemand den Algorithmus, den Sie verwendet haben, herausgefunden hat. Wenn sie dies täten, könnten sie "leicht" die Benutzer-ID ändern und selbst eine MD5-Summe berechnen. Ein robusterer Ansatz wäre einer, bei dem die Prüfsumme mit einem Schlüssel verschlüsselt wurde, auf den nur Sie Zugriff hatten. Aber wieder muss ich dein Motiv dafür hinterfragen, denn es gibt andere Sicherheitslösungen, die viel besser sind.
Sie können nicht.
Alles in der HTTP-Anfrage (einschließlich URL, Abfragezeichenfolge, Cookies, ...) unterliegt der Kontrolle des Clients und ist leicht zu fälschen.
Aus diesem Grund ist es wichtig, gültige Inhalte auf die Whitelist zu setzen, da der Client beliebig beliebige Einträge hinzufügen kann, die zusätzlich zu dem, was Sie erhalten möchten, hinzugefügt werden können.
Hier ist eine weitere Option, die ich für meine Anforderungen unglaublich nützlich fand:
4 Guys From Rolla - Übergabe manipulationssicherer QueryString-Parameter
Sie können nicht feststellen, ob es manuell geändert wurde. Wenn Sie Query-Strings verwenden, müssen Sie sicherstellen, dass es keine Rolle spielt, ob es geändert wird. z.B. Wenn Sie sie verwenden, um einem Benutzer ihre Kontodetails anzuzeigen, müssen Sie überprüfen, ob der ausgewählte Benutzer der aktuelle Benutzer ist und eine Fehlermeldung anstelle von Benutzerdaten anzeigt, falls dies nicht der Fall ist.
Wenn der Benutzer zum Beispiel den Datensatz 5 ändern kann, aber nicht den Eintrag 7, muss dies serverseitig erzwungen werden. Dazu müssen Sie in der Lage sein, den Benutzer zu identifizieren, indem Sie eine Anmeldung verlangen und ihnen einen eindeutigen Sitzungsschlüssel zuweisen, der in ihrem Browser-Cookie oder als ein anderer Parameter in der URL-Abfragezeichenfolge gespeichert wird.
Es gibt reichlich Pakete / Module / Bibliotheken in man-Sprachen für den Umgang mit Authentifizierung und Sitzungen in einer vernünftigen Weise - rollen Sie selbst auf eigene Gefahr:)
Nun - es kommt darauf an:)
Eine Möglichkeit besteht darin, userID
in eine Sitzungsvariable zu schreiben. So kann der Benutzer den Wert nicht sehen oder bearbeiten.
Wenn Sie andere Mittel haben, um zu erkennen, ob der Wert ungültig ist (dh nicht existiert oder nicht für diesen Benutzer (den Sie auf andere Weise identifizieren können) oder Ähnliches, könnten Sie erhalten weg mit der Validierung der Eingabe selbst in Code hinter.
Aber wie Sie wahrscheinlich wissen, können Sie nicht verhindern, dass der Benutzer die Abfragezeichenfolge ändert.
Tags und Links asp.net