Unsicheres Zurückschreiben von einem asp.net-Steuerelement auf einer sicheren Seite unter Vermeidung von Authentifizierung

Wir verwenden die standardmäßige asp.net Formularauthentifizierung. Bei bestimmten Seiten muss ein Benutzer angemeldet sein. und zumindest einige dieser Seiten werden von https geliefert. Oben auf jeder Seite befindet sich ein Suchsteuerelement. Wenn dies verwendet wird, ist es uns egal, ob die Benutzersitzung abgelaufen ist, selbst wenn die aktuelle Seite eine Anmeldung erfordert.

Bei der Durchführung der Suche sieht die integrierte Formularauthentifizierung derzeit jedoch vor, dass für die bereitgestellte Seite eine Authentifizierung erforderlich ist und der Benutzer zur Anmeldeseite weitergeleitet wird. Die vorherige Seite ist nicht die Suchergebnisseite als Referrer.

Was ist der beste Weg, die Sicherheit hier zu umgehen? Ich habe überlegt, auf eine andere Seite mit der PostBackUrl-Eigenschaft zu buchen, aber wenn dies nicht https ist, erhalten Sie die Nachricht "Sie veröffentlichen Daten in einer unsicheren Verbindung", die die Benutzer nicht mögen.

Danke für jede Hilfe.

Edit: Danke Nick für deinen Vorschlag, ein GET auf der Suchseite zu verwenden. Wir tun dies bereits, aber die Abfragezeichenfolge wird vom Sucheingabesteuerelement erstellt und dann umgeleitet. Wie können wir die Abfragezeichenfolge erstellen, ohne ein Postback zu verwenden? (Natürlich ist Javascript eine Option, aber ich hatte gehofft, einen alternativen Mechanismus zu finden.)

3

3 Antworten

Für die Suchseite möchten Sie sicherstellen, dass die Suche über eine GET-Anfrage erfolgt. (d. h. wie Google mit dem "q" in der Abfragezeichenfolge). Wahrscheinlich machen Sie einen POST.

Also ändere dein

<form method="post" ...>

zu

<form method="get" ...>

The biggest mistake most developers make with search pages is zudo a post back. HTTP was designed zudo queries or searches through the query string (thus the name), and zuget a form zupost zua query string instead of the body you need zuuse a "GET" method. This way any search device can use your search page, even the browsers search box.

Second you want zucreate a special location config for you search page. You add this zuyour web.config.


    
        
            
        
    

This creates a special override for that one page and everything inside the location tag uses the exact same web.config structure zuoverride the web.config.

You will want zurepeat this for each page you want zuallow all users to.

2
hinzugefügt

Wenn die Suchergebnisseite ein Postback ausführt, wird das Pageload-Ereignis ausgelöst, bevor auf die Suchtaste geklickt wird.

Wenn die Seite, auf der sie sich befinden, eine Anmeldung erfordert, wird der Anmeldebefehl ausgeführt, bevor die Schaltfläche "Suchen" auf das Ereignis klicken, um sie zum Anmeldebildschirm zu senden.

Es gibt ein paar Möglichkeiten, um die Suche zu einem normalen HTML-Formular zu machen und machen es ein GET nicht ein POST und erwähnt von "Nick"

Ort, wenn die ganze Seite in einem .net-Postback-Formular ist, müssen Sie das Such-Button-Ereignis zu einer Überladung der Seite laden, so dass es zuerst ausgelöst wird.

This site has a good article on the page like cycle and its overrides. http://www.15seconds.com/issue/020102.htm

1
hinzugefügt

Wie in anderen Antworten vorgeschlagen, wäre der beste Weg, dies zu tun, das Sucheingabesteuerelement in einer separaten Form zu haben, die eine Methode von get und eine Aktion von searchresults.aspx enthält. Dies ist jedoch schwierig mit aspx, da Sie nur ein serverseitiges Formular auf einer Seite haben können.

Am Ende war die Lösung, die ich fand, die sehr gut funktioniert, ein HttpModule zu haben, das entdeckte, wenn der "Suchen" -Knopf angeklickt wurde (indem er nach einem Param mit seiner ID suchte), um dann einen Abfrage-String aufzubauen Suche nach den Kriterien params und umgeleitet auf die Suchergebnisseite. Dies bedeutet, dass alle Authentifizierungs-/Autorisierungsmodule umgangen werden, da wir bereits eine Umleitung auf die (ungesicherte) Suchergebnisseite aufgerufen haben, bevor sie ausgelöst werden.

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

0
hinzugefügt