Zur Navigation

Zugriffsschutz .htaccess

1 robertpaessler (Gast)

Liebe Community,

ich möchte eine sicher häufig genutzte Funktion anwenden, bekomme es aber auch nicht über eine gezielte Suche. Ich weiß nicht mehr, wonach ich suchen soll.

Mittels .htaccess wird jegliche Anfrage auf eine index.php geleitet.
Ich möchte so verhindern, dass andere PHP-Dateien im Ordner direkt aufgerufen werden können.
Von der index.php soll man aber mittels Link auf eine Seite kommen, z. B. seite2.php. Übergeben werden soll auch eine SessionID.

Nun verhindert meine aktuelle Einstellung aber, dass seite2.php aufgerufen wird. Ich werde zu index.php verlinkt.

Ich schreibe mal bewusst nicht den Inhalt meiner .htaccess auf, damit ich vielleicht eine andere Herangehensweise aufgezeigt bekomme. Ich kann natürlich gerne den Inhalt liefern.

Ich würde mich freuen, wenn ich eine Antwort bekommen könnte. So schwer kann das ja nicht sein. Vielleicht über die SessionID?


Beste Grüße
Robert

11.12.2022 16:41

2 Jörg Kruse

eine sicher häufig genutzte Funktion

Ein häufiger Anwendungsfall ist, dass PHP-Dateien nicht direkt, sondern nur unter einer rewriteten URL aufgerufen werden können, z.B. unter https://example.com/seite2/ statt https://example.com/seite2.php.

Dass die seite2.php nur mit gesetzter Session ID aufgerufen werden kann, halte ich dagegen für schwierig umzusetzen. Was ist mit Besuchern und Suchmaschinen-Bots, die kein Cookie setzen lassen? Die Session ID kann zwar auch als URL-Parameter übertragen werden, das ist aus Sicherheitsgründen aber nicht immer ratsam.

Und was ist mit Besuchern, die die Seite bookmarken? Suchmaschinen, die die Seite indexieren? mit einem Aufruf aus den Bookmarks / aus der Suchergebnisseite wird man (nach Ablauf der Session) wieder auf die index.php weitergeleitet.

11.12.2022 17:51 | geändert: 11.12.2022 17:55

3 robertpaessler (Gast)

Vielen Dank für die Antwort.
Ich muss mein Problem konkretisieren:

Zunächst der Inhalt meiner .htaccess:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/(todo/start\.php)?$ [NC]
RewriteRule ^.*$ /todo/start.php [L,R=301]

Ich will damit verhindern, dass andere Dateien direkt aufgerufen werden können. Oder geht das auch anders?

In der start.php erfolgt eine Passwortabfrage, die bei korrekten Daten Folgendes macht:

$_SESSION["berechtigt"] = 1;
echo "<META http-equiv=\"refresh\"content=\"0;desk.php\">\n";

Die desk.php wird aber nun nicht aufgerufen, weil wieder zu start.php verlinkt wird.

Wie erzeuge ich denn dann korrekt geheime Dateien?

Ich würde mich wieder über eine Antowrt freuen.


Beste Grüße
Robert

12.12.2022 14:29

4 Jörg Kruse

Der Inhalt von $_SESSION lässt sich nicht in der .htaccess Datei kontrollieren.

Du kannst ganz am Anfang jeder PHP-Datei (mit Ausnahme von von todo/start.php) die Berechtigung prüfen:

<?php

session_start();
if ($_SESSION["berechtigt"] != 1) {
    header('Location: https://example.com/todo/start.php');
    exit;
}

// ab hier folgt der eigentliche Code der jeweiligen Datei

Wenn die Überprüfung negativ ausfällt, wird der Besucher nach https://example.com/todo/start.php weitergeleitet.

12.12.2022 15:20 | geändert: 12.12.2022 15:31

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]