Webserver - Zugriff auf Skript verhindern?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Standardmäßig regelt man das über die Ordnerstruktur.

Du hast z.B. etwas in der Form:

Projekt
|- src
|  |- Klasse1.php
|  |- Klasse2.php
|
|- public
|  |- css
|  |  |- style.css
|  |- index.php

Deine Domain zeigt nun nach Projekt\public. Innerhalb deines PHP-Skripts kannst du natürlich in Dateien da drüber zugreifen:

include '../src/Klasse1.php'

bzw. natürlich automatisch über Namespaces und Autoload. Jedoch kann niemand in einen Ordner vor public im Browser navigieren. Etwas ala:

https://www.domain.com/../src/Klasse1.php

funktioniert eben nicht.

Natürlich kann man für sowas auch RewriteRegeln nutzen, wie von odine vorgeschlagen bzw. dort sollten generell einige Sicherheitsprüfungen rein. Dies ist aber erstmal der einfachste Weg.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012
Wie kann man verhindern, dass man jegliche HTML sowie PHP Datei über die Suchleiste aufrufen kann.

Du könntest es so programmieren, dass in der aufrufenden Seite eine Session-Variable gesetzt wird und die aufgerufene Seite nur dann angezeigt wird, wenn die Session-Variable richtig ist.

aufrufendeSeite.php:

<?php $_SESSION['access'] = TRUE; ?>
<a href="zielseite.php">Zielseite aufrufen</a>

zielseite.php:

<?php
if(!$_SESSION['access']) 
{
  echo "Zugriff verweigert";
  exit;
}
unset($_SESSION['access']);
?>
<p>Willkommen auf der Seite</p>

Damit erreichst Du, dass die zielseite.php nur von den Seiten aufgerufen werden kann, die zuvor die Variable $_SESSION['access'] gesetzt haben. Ein direkter Aufruf der Seite zielseite.php ist damit nicht mehr möglich.

Alex

Ich verstehe nicht ganz. Auf einem klassischen Webserver wie Apache kann man alles aufrufen, was im Webroot so zu finden ist. Gewisse Dinge kann man konfigurieren, aber nicht so dynamisch, wie du das wohl möchtest.

Wenn bestimmte Skripte nur aufgerufen werden sollen, wenn das gewollt ist, würde ich den Aufbau eurer Applikation ein wenig überdenken. Dann solltet ihr vor dem Aufruf des Skripts prüfen, ob der Besucher diese nun auch aufrufen darf. Wenn nicht, wird er auf eine Fehlerseite oder sowas weitergeleitet.

Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung

Man könnte es z.B. über die Zugriffsrechte im Verzeichnis und RewriteRegeln in der .htaccess realisieren

Woher ich das weiß:Studium / Ausbildung – Elektronik studiert, Abschluss als Dipl.-Ing.