Parameter 'z' ungeprüft mit der PHP-Funktion inclu

Noah28

Angesehenes Mitglied
Hallo,

habe folgendes Problem. Wie kann ich das umgehen ? Gibt es da eine Sicherheitsfunktion.

Programmierfehlers eine Code Injection möglich ist. Da der Parameter 'z' ungeprüft mit der PHP-Funktion include()

Danke für die Hilfe
 
Hallo,

ich habe einige Probleme Dich zu verstehen... Aber ich vermute mal, Du solltest einfach überprüfen, welchen Wert 'z' hat und dann entscheiden, ob die Datei eingebunden werden darf oder nicht.
Grundsätzlich ist jedoch davon abzuraten Dateien über Variablen, welche von außen beeinflussbar sind, zu includen.



MfG Sascha Ahlers
 
Hm...das Problem ist...die Scripte die ich verwende sind so geschrieben. Wie kann ich das Problem beseitigen ?

Danke für die schnelle Antwort
 
QUOTE (Noah28 @ Do 5.1.2006, 21:30) Hm...das Problem ist...die Scripte die ich verwende sind so geschrieben. Wie kann ich das Problem beseitigen ? [...]

Den Quelltext bearbeiten, oder es über mod_security Filtern, wobei ich Dir da wohl eher zum Bearbeiten des Quelltextes raten würde.
Um was für Software handelt es sich denn? Hast Du die unter Umständen in Auftrag gegeben?



MfG Sascha Ahlers
 
Eine relativ sichere Methode ist, mit str_replace das möglicherweise vrhandene http:// zu filtern/löschen, somit können keine externe Dateien includet werden.
 
QUOTE (Roberto Zehnder @ Do 5.1.2006, 23:08)Eine relativ sichere Methode ist, mit str_replace das möglicherweise vrhandene http:// zu filtern/löschen, somit können keine externe Dateien includet werden.

Nicht zu vergessen die anderen Protokolle wie https, ftp, ftps usw. Ich glaube da kann man besser gleich alles mit "://" im String löschen.

So können aber immer noch Dateien eingebunden werden, was nicht unbedingt pratisch ist, je nachdem, was das Script denn macht... Diese müssen natürlich auch noch gefiltert werden, und auch die PHP-Konfiguration muss entsprechend sicher sein.



MfG Sascha Ahlers
 
Eine Möglichkeit wäre auch die Daten im String mit einer Liste erlaubter Seiten, in einer MySql Datenbank zum Biespiel, zu überprüfen und wenn die im String enthaltene Unterseite in der MySql Datenbank steht, so wird erlaubt die Seite einzubinden.

Ist natürlich bei sehr vielen Seiten ein wenig mühsam, aber ich denke eine zimlich sichere Möglichkeit.
 
Mit file exist könnte man arbeiten... aber Achtung:

QUOTE Also while using the file_exists file, please make sure you do not start using stuff like,

CODE
<?php

if(file_exists($_GET['file'] . '.php')) {
include($_GET['file'] . '.php';
}

?>


you could use something like this..

CODE
<?php
$inrep = "./";
$extfichier = ".php";
$page = $inrep.basename(strval($_REQUEST["page"]),$extfichier).extfichier;
if(file_exist($page)) {
include($page);
}
?>


or even hardcode it.

So since pretty much all commercial server(s) have url_fopen on.. you can imagine that file_exists($_GET['file']. '.php')
is rather .. unsecure
smile.gif


-David Coallier


Quelle: http://ch2.php.net/function.file-exists
 
Zurück
Oben