Dies ist das archivierte jawl.


jawl bedeutet „just another Weblog“ und war vom 6.4.2001 bis zum 4.1.2018 das Blog von Christian Fischer. Das Blog wird nicht mehr weiter geschrieben, bleibt aber als Archiv online. ’cause: Don’t change a running URL ;)

Includes sicherer machen

Fast alle PHP-Schreiber arbeiten mit include(), um Inhalte – meist abhängig von irgendetwas, was dann als GET-Parameter ankommt – einzubinden.

Und fast alle wissen, dass man das absichern sollte.

Mit den folgenden Zeilen kann man recht simpel so einen Include-Aufruf dichtbekommen:

Alle Dateien, die eingebunden werden sollen, liegen im Verzeichis /include und haben die Endung .inc.php – das Script läßt sich aber auch anpassen.

Zuerst wird ein Aarray angelegt, in dem alle Dateien dieses Verzeichnisses ohne Endung stehen – und schon haben wir ein Array, in dem alle erlaubten GET-Parameter stehen.

Beim eigentlichen include()-Befehl steht jetzt nur noch eine if-Abfrage, die das Array checkt und sonst alles andere auf die Startseite schickt.

Neue include-Dateien werden nur in das richtige Verzeichnis gespeichert und sind somit automatisch erlaubt.

<?php
$inc_array = array();
$inc_dir=opendir ("./includes");
while ($inc = readdir ($inc_dir)) {
  if($inc != "." && $inc != "..") {
    $short_inc = str_replace(".inc.php", "", $inc);
    array_push ($inc_array, $short_inc);
  }
}
closedir($inc_dir);

if (isset($_GET[topic]) && in_array($_GET[topic], $inc_array) ) {
  include("./includes/".$_GET[topic].".inc.php");
} else {
  include("./includes/start.inc.php");
}
?>

Wahrscheinlich könnte man das doch eleganter machen – zB das Array irgendwie cachen, aber es läuft und ist wenig Aufwand.

Kommentare sind geschlossen.

»