Contentswitch sicher?

MJRENNER

Mitglied
Guten Morgen Gemeinde,

Ich hätte eine frage an euch. Ich steht grad etwas auf dem schlauch.
Bau ein Contentswitch zusammen das ich meine file mittels "index.php?page=links"
aufrufen kann. Nun wollte ich fragen ob er folgende Code sicher ist oder ob man damit von aussen sachen einbringen kann.

PHP:
<?php
$page = $_GET['page'];
if ( $page == "" ) $page = "/include/index";

if ( is_readable ( $page.".php" ) ) include  $page.".php";
else include "include/index.php";
?>
 
Moin,

das ist nicht wirklich sicher, da jede beliebige lesbare Datei mit der Endung PHP angefordert werden kann(was höchstwahrscheinlich nicht gewollt ist)
 
du könntest das von meinem Vorposter beschriebene Problem lösen, indem du ein Array erstellst, welches dir Dateien vorgibt, die erlaubt sind.
PHP:
$allowed=array('start', 'links', 'seite1', 'seite2');

und bei jedem aufruf überprüfst du, ob die aufgerufene seite in $allowed ist und fertig ist der Keks. Darüber kannst du dir dann eine Weiterleitung erstellen, wenn eine nicht legitime Seite augerufen wird.
 
Es geht nicht um fremde Dateien von entfernten Servern, es geht um Dateien von deinem Server. Man kann durchaus Pfade erraten, Google oder Postings von dir hier im Forum, in denen du Pfade preisgegeben hast, leisten Hilfestellung.
(is_readable() funktioniert eh nicht mit entfernten Dateien )


Ich hab mal einfach probiert.
Auf der Startseite verweist ein Formular auf http://cms.mjrenner.de/index.php?page=member/function/login

Ich habs mit logout probiert, und bekomme die Meldung, dass ich erfolgreich ausgeloggt wurde(obwohl nicht eingeloggt)

Die Frage die du dir also stellen musst ist:
Bin ich sicher, dass sich auf meinem Server keine einzige Datei befindet und in Zukunft befinden wird, die einen Schaden anrichten könnte, wenn ihr Pfad erraten und sie durch dein CMS eingebunden wird.

Kannst du diese Frage definitiv mit JA beantworten?
 
Kann ich bestimmt nicht solange ich nicht alle durchsucht habe. die frage ist wie mach ich es sonst außer jeder seite anlegen? andere cms seiten haben ja auch irgendwie ne lösung damit sie nicht jede seite einzeln einbinden müssen ..
 
Für mich habe ich die Sache direkt über eine Datenbank als Zwischenstelle gelöst. Hier sind alle Seiten mit Titel und sonstigen Header angaben angegeben.
Zusätlzlich habe ich hier eine Angabe, welcher Content angezeigt werden soll.
Dabei habe ich dann auch ein schönes Berechtigungssystem, wer was sehen darf.

Wenn du dir Typo3 mal als CMS ansiehst, wirst du feststellen, dass hier nur noch mit Datenbanken gearbeitet wird, um den Inhalt auszugeben.

Ich denke nicht, dass du komplett darum herum kommen kannst, irgendwas per Hand anzugeben. Wenn nicht im Quellcode, dann wenigstens in der Datenbank.
 
Ok mit Datenbank arbeiten hört sich auch ganz schick an. meisnt du könntes mir nen schupps in die richtung geben wie du das machst?
 
Zurück