Unsecure Posting auf einer sicheren Seite von einer asp.net Kontrolle zurück, während der Authentifizierung zu vermeiden

StackOverflow https://stackoverflow.com/questions/201796

  •  03-07-2019
  •  | 
  •  

Frage

Wir sind mit Standard asp.net Formularauthentifizierung. Bestimmte Seiten erfordern einen Benutzer angemeldet sein, um; und wenigstens einige dieser Seiten werden von https geliefert. Es gibt eine Suchsteuerung am oberen Rand jeder Seite. Wenn diese verwendet wird, können wir nicht, ob die Sitzung des Benutzers abgelaufen ist, auch wenn die aktuelle Seite in ein Protokoll erfordert.

Derzeit wird jedoch, wenn die Suche durchgeführt wird, die ich im internen Formularauthentifizierung sieht, dass die Seite Authentifizierung geschrieben werden zu müssen und leitet den Benutzer auf die Login-Seite, mit der vorherige Seite nicht die Suchergebnisseite als Referrer.

Was ist der beste Weg, um die Sicherheit hier zu umgehen? Ich habe auf einer anderen Seite betrachtet Posting die PostBackUrl Eigenschaft verwenden, aber wenn dies nicht https Sie erhalten die Meldung „Sie Daten auf eine unsichere Verbindung Mitteilung verfassen“, welche Benutzer nicht mögen.

Vielen Dank für jede Hilfe.

Edit: Dank Nick für Ihren Vorschlag eines GET auf der Suchseite zu verwenden. Wir tun dies bereits, aber die Query-String wird durch die Sucheingabesteuerung konstruiert dann umleitet. Wie können wir ohne die Verwendung eines Postbacks die Query-String aufbauen? (Offensichtlich Javascript ist eine Option, aber ich hatte gehofft, einen alternativen Mechanismus zu finden.)

War es hilfreich?

Lösung 3

Wie in anderen Antworten vorgeschlagen, den meisten richtigen Weg, dies zu tun, wäre die Sucheingabesteuerung in einer separaten Form zu haben, die ein Verfahren zur Herstellung erhalten und eine Aktion von SearchResults.aspx hat. Dies ist jedoch schwierig, mit aspx wie Sie nur ein serverseitige Formular auf einer Seite haben können.

Am Ende kam die Lösung, die ich an, die sehr gut funktioniert, war ein Httpmodule zu haben, wenn die „Suche“ spotted Schaltfläche geklickt worden war (von der Suche, um zu sehen, ob ein param mit seiner ID existiert), dann aufgebaut ein Query-String, indem sie nach den Kriterien params und auf der Suchergebnisseite umgeleitet. Dies bedeutet, dass alle Authentifizierung / Autorisierung Module umgangen werden, da wir bereits eine Umleitung auf die (ungesicherte) Suchergebnisseite aufgerufen, bevor sie ausgelöst werden.

Es ist etwas spröde, aber für uns ist es funktioniert sehr gut.

Andere Tipps

Für die Suchseite Sie sicherstellen möchten, dass die Suche über eine GET-Anfrage geschieht. (Das heißt wie Google mit dem „q“ in der Abfragezeichenfolge) Die Chancen sind Sie eine POST tun.

So ändern Sie Ihre

<form method="post" ...>

<form method="get" ...>

Der größte Fehler, die meisten Entwickler mit Suchseiten machen, ist ein Beitrag zurück zu tun. HTTP wurde entwickelt, Abfragen oder durchsuchen das Query-String zu tun (daher der Name) und eine Form zu einem Abfrage-String, um es zu bekommen, anstatt des Körper benötigen Sie eine „GET“ Methode zu verwenden. Auf diese Weise jede Sucheinrichtung Ihre Suchseite verwenden kann, auch das Browser-Suchfeld.

Zweitens wollen Sie eine spezielle Standort Config rel="nofollow Suchseite. Sie fügen diese zu Ihrem web.config.

<location path="my-search-page.aspx">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>

Dies erzeugt eine spezielle Überschreibung für diese eine Seite und alles innerhalb des Standort-Tag verwendet die exakt gleiche web.config Struktur der web.config außer Kraft zu setzen.

Sie wollen dies wollen für jede Seite, die Sie wiederholen alle Benutzer zu ermöglichen.

Wenn die Suchergebnisseite wird ein Postback des Pageload-Ereignis durchführen wird abgefeuert werden, bevor Sie Ihre Suchtaste geklickt wird.

Wenn also die Seite, die sie auf eine Anmeldung erforderlich sind, das Kommando anmelden wird vor der Veranstaltung Suchtaste klicken läuft sie zurück zum Anmeldebildschirm zu senden.

Es gibt ein paar Möglichkeiten, diese Runde die Suche machen ein normales HTML-Formular und machen itperform GET keine POST und erwähnt von „Nick“

Ort, wenn die ganze Seite in einer .net Postbacks Form ist, müssen Sie die Suchtaste Ereignis zu einer Überlastung der Seite Last hinzuzufügen, damit es zuerst feuert.

Diese Seite hat einen guten Artikel auf der Seite wie Zyklus und seine Überschreibungen. http://www.15seconds.com/issue/020102.htm

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