emailconfirmed, nsInternRO, nsInternRW, Administrators
3,356
edits
mNo edit summary |
|||
Line 43: | Line 43: | ||
PHP Quellcode wird mit den Schlüsselzeichen <tt> | PHP Quellcode wird mit den Schlüsselzeichen <tt> | ||
<nowiki>?></nowiki> | |||
<nowiki><?php</nowiki> </tt> und <tt> | |||
<nowiki>?></nowiki> </tt> umgeben. Man kann HTML und PHP mischen! | |||
<source lang="PHP"> | <source lang="PHP"> | ||
Line 320: | Line 324: | ||
// first, check if any parameter given, eg: index.php?id=kontakt | // first, check if any parameter given, eg: index.php?id=kontakt | ||
if(isset($_GET['id'])) { | if(isset($_GET['id'])) { | ||
// Hier fehlt noch eine Fehlerprüfung und Test auf relative Pfadangaben | |||
$id = $_GET['id']; | $id = $_GET['id']; | ||
} else { | } else { | ||
Line 346: | Line 351: | ||
Natürlich fehlt bei diesem Beispiel eine Fehlerprüfung, z.B. wenn es ein Dokument nicht gibt, aber im Prinzip ist das schon ein ziemlich einfaches CMS :) | Natürlich fehlt bei diesem Beispiel eine Fehlerprüfung, z.B. wenn es ein Dokument nicht gibt, aber im Prinzip ist das schon ein ziemlich einfaches CMS :) | ||
'''WICHTIG!'''<br/> | |||
'''Das obige Beispiel ist möglicherweise unsicher, weil es theoretisch Lese-Zugriff auf alle möglichen Dateien mit der Endung "inc.php" gibt. So kann man die per GET an index.php übermittelte 'id' mit einer relativen Pfadangabe dazu bringen, Dateien außerhalb des Verzeichnisses anzuzeigen. Z.B. <tt>index.php?id=/</tt>, damit bekommt man Zugriff auf das Wurzelverzeichnis ("/") des Servers. Eine von vielen möglichen Lösungen ist z.B. die angeforderten includes zu testen und nur solche durchlassen, die in einem bestimmten Verzeichnis liegen. Oder man kann id-Werte blockieren, die bestimmte Sonderzeichen wie Schrägstriche enthalten.''' | |||