chickenwing
Mitglied
Hallo.....
Da Du ein assoziatives Array angelegt hast, in dem die Schlüssel Deinem GET-Parameter entsprechen (sollten), geht das z.B. mit array_key_exists():
If(array_key_exists($_GET['s'], $s)) {
include($s[$_GET['s']);
} else {
include($s['news']);
}
Bei numerischen GET-Inhalten a la id=25 solltest Du mindestens auf numerisch prüfen:
if is_numeric($_GET['id']).....
ganz besonders, wenn Inhalte aus einer Datenbank kommen, sonst fängt man sich schnell eine SQL-Injection.
Fehlerbehandlungsroutinen nicht vergessen.....
Allerdings wäre bei Deiner Version in diesem speziellen Fall nicht groß was passiert, da sich Dein include auf einen nicht vorhandenen Schlüssel bezogen hätte, sofern man die URL manipuliert hätte. Hätte nur eine PHP Notice ergeben wg. 'undefined index'
Aber CornFreak hat grundsätzlich recht: Niemals URL-Parameter ohne Plausibilitätsprüfung includen! Du musst, traurige Wahrheit, immer vom "bösen" User ausgehen. Ich habe einige Seiten programmiert, bei denen ich mit eine Mail schicken lasse, sobald einer versucht, andere Inhalte in GETs zu verpacken als eigentlich vorgesehen. Da komme ich in Spitzenzeiten schon mal auf bis zu 50 Mails am Tag!
Die error-reporting Direktiven auch niemals auf einem Produktionsserver (der im Web)
Greetz cw
Da Du ein assoziatives Array angelegt hast, in dem die Schlüssel Deinem GET-Parameter entsprechen (sollten), geht das z.B. mit array_key_exists():
If(array_key_exists($_GET['s'], $s)) {
include($s[$_GET['s']);
} else {
include($s['news']);
}
Bei numerischen GET-Inhalten a la id=25 solltest Du mindestens auf numerisch prüfen:
if is_numeric($_GET['id']).....
ganz besonders, wenn Inhalte aus einer Datenbank kommen, sonst fängt man sich schnell eine SQL-Injection.
Fehlerbehandlungsroutinen nicht vergessen.....
Allerdings wäre bei Deiner Version in diesem speziellen Fall nicht groß was passiert, da sich Dein include auf einen nicht vorhandenen Schlüssel bezogen hätte, sofern man die URL manipuliert hätte. Hätte nur eine PHP Notice ergeben wg. 'undefined index'
Aber CornFreak hat grundsätzlich recht: Niemals URL-Parameter ohne Plausibilitätsprüfung includen! Du musst, traurige Wahrheit, immer vom "bösen" User ausgehen. Ich habe einige Seiten programmiert, bei denen ich mit eine Mail schicken lasse, sobald einer versucht, andere Inhalte in GETs zu verpacken als eigentlich vorgesehen. Da komme ich in Spitzenzeiten schon mal auf bis zu 50 Mails am Tag!
Die error-reporting Direktiven auch niemals auf einem Produktionsserver (der im Web)
Greetz cw