Zitat von
BUG:
Es sollten nie Seiten/Dateien aus Parametern direkt aufgerufen werden,
lieber nochmal die Gültigkeit überprüfen (zB: durch eine
DB) , sonst
Riesensicherheitlücke
(Pishing, Cross-Site-Scripting, ...)
So ist es. Ausserdem, wenn es nicht unbedingt mit Frames gemacht werden muss, kannst du das Schlimmste auch sehr einfach verhindern: verwende einfach include(). Wenn dein Provider nicht bescheuert ist, hat er entweder safe_mode mit einer open_basedir-Restriction an, oder mindestens allow_url_fopen aus. Damit koennen keine Remote-Dateien gelesen werden. Gescheiter ist das: Anstatt
Code:
if(file_exists('pages/'.$page))
zu schreiben, schreibst du:
Code:
if (preg_match('#^[a-z0-9\-_]+\.html$#i', $page) && file_exists('pages/'. $page))
Damit muss ein Dateiname mit mindestens einem Alphanumerischen Zeichen sowie - oder _ beginnen, und mit ".html" enden. Sonst koennte jemand auch /etc/passwd auslesen, und das waere leicht besch*.
Greetz
alcaeus