PHP: Überprüfen Sie, ob URL-Weiterleitungen?

7

Ich habe eine Funktion implementiert, die auf jeder Seite ausgeführt wird, die ich von nicht angemeldeten Benutzern einschränken möchte. Die Funktion leitet den Besucher automatisch auf die Anmeldeseite um, falls er nicht eingeloggt ist.

Ich möchte eine PHP-Funktion erstellen, die von einem externen Server ausgeführt wird und eine Reihe von festgelegten URLs (Array mit URLs für jede geschützte Site) durchläuft, um zu sehen, ob sie umgeleitet werden oder nicht. Dadurch konnte ich leicht sicherstellen, dass der Schutz auf jeder Seite aktiv ist.

Wie könnte das gemacht werden?

Danke.

    
Industrial 03.06.2010, 10:00
quelle

9 Antworten

21
%Vor%     
Annika Backstrom 03.06.2010, 10:37
quelle
3

Ich benutze curl und nehme nur Header, nachdem ich meine URL und URL von Header curl:

verglichen habe %Vor%     
Piotr Kazuś 03.08.2016 10:20
quelle
2

Sie könnten immer versuchen, Folgendes hinzuzufügen:

%Vor%

da 302 bedeutet, dass es sich bewegt hat, lassen Sie den curl-Aufruf folgen und geben Sie zurück, was auch immer die bewegte URL zurückgibt.

    
Bren1818 14.07.2014 20:26
quelle
1

Ich bin mir nicht sicher, ob das als Sicherheitscheck wirklich Sinn macht.

Wenn Sie befürchten, dass Dateien direkt aufgerufen werden, ohne dass Ihr Benutzer angemeldet ist? checks ausgeführt werden, könnten Sie tun, was viele große PHP-Projekte tun: Definieren Sie in der zentralen include-Datei (wo die Sicherheitsprüfung stattfindet) eine Konstante BOOTSTRAP_LOADED oder was auch immer, und prüfen Sie in jeder Datei, ob diese Konstante gesetzt ist.

Testen ist großartig und Sicherheitstests sind noch besser, aber ich bin mir nicht sicher, welche Art von Schwachstellen Sie damit aufdecken wollen? Diese Idee ist für mich eine Zeitverschwendung, die keine wirkliche zusätzliche Sicherheit bringt.

Stellen Sie nur sicher, dass Ihr Skript die() s nach dem header("Location:...") redirect ist. Das ist wichtig, um zu verhindern, dass zusätzlicher Inhalt nach dem Header-Befehl angezeigt wird (ein fehlender Die () würde übrigens nicht von Ihrer Idee erfasst, da der Redirect-Header immer noch ausgegeben würde ...)

Wenn Sie das wirklich tun möchten, können Sie auch ein Tool wie wget verwenden und es mit einer Liste versehen von URLs. Lassen Sie die Ergebnisse in ein Verzeichnis holen und überprüfen Sie (z. B. anhand der Dateigrößen, die identisch sein sollten), ob jede Seite den Anmeldedialog enthält. Nur um eine weitere Option hinzuzufügen ...

    
Pekka 웃 03.06.2010 10:27
quelle
1

Möchten Sie den HTTP-Code überprüfen, um festzustellen, ob es sich um eine Weiterleitung handelt?

%Vor%     
baloo 03.06.2010 10:48
quelle
0

Sie können die Sitzung verwenden, wenn das Sitzungsarray nicht festgelegt ist, wird die URL auf eine Anmeldeseite umgeleitet. .

    
luckydeng 03.06.2010 10:08
quelle
0

Ich habe die Antwort von Adam Backstrom geändert und den chiborg-Vorschlag implementiert. (Laden Sie nur HEAD herunter). Es hat noch eine Sache: Es wird überprüft, ob die Umleitung auf einer Seite des gleichen Servers ist oder nicht. Beispiel: terra.com.br leitet zu terra.com.br/portal um. PHP wird es wie Redirect berücksichtigen, und es ist korrekt. Aber ich wollte nur diese URL auflisten, die zu einer anderen URL umleitet. Mein Englisch ist nicht gut, also, wenn jemand etwas wirklich schwer zu verstehen gefunden hat und dies bearbeiten kann, ist es uns willkommen.

%Vor%     
jaysponsored 22.09.2012 20:18
quelle
0
%Vor%     
Ludo - Off the record 02.06.2013 11:35
quelle
-2

Ich kann deine Frage nicht verstehen. Sie haben ein Array mit URLs und möchten wissen, ob der Benutzer von einer der aufgeführten URLs stammt? Wenn ich deine Aufgabe richtig verstanden habe:

%Vor%     
GOsha 03.06.2010 10:04
quelle

Tags und Links