ChrisB: substr

Beitrag lesen

Hi,

ich hab mittlerweile auch verstanden dass mien skript sicherheitslücken hat.
jedoch hab ich noch nciht verstanden, wie ich die shcließen kann.
mit $POST?

Nein.
Erstens heißt es $_POST, analog zu $_GET, und zweitens handelt es sich dabei genauso um von außen kommende Werte, die alles mögliche enthalten können - also entsprechend geprüft bzw. behandelt werden müssen, bevor man sie verwendet.

ist es so besser?

$link = $POST['link'] ;

if (in_array("/portfolio/".$link, $verzeichnis)) {
$pfad = "/portfolio/".$link;
}

  
Das ist zumindest schon mal ein möglicher Ansatz, wenn du in $verzeichnis dann alle Pfadnamen explizit aufgelistet hast, die erlaubt sein sollen. (Wenn alle mit "/portfolio/" anfangen, kannst du dieses Präfix aber auch aus dem Array und der Überprüfung heraus nehmen.)  
  

> ich blicke noch nciht so ganz hinter den unsicherheitsfaktor.  
  
Wenn du nicht bspw. wie oben gegen einer Liste erlaubter Werte prüfst, sondern bspw. \*nur\* sowas machen würdest  
`$pfad = "/portfolio/".$POST['link'];`{:.language-php}  
- dann könnte ich dir bspw. den Wert "../irgendwas" an dein Script übergeben, und schon wäre ich aus dem vorgegebenen Verzeichnis „ausgebrochen“, und dein Script verwendet plötzlich Dateien aus einem ganz anderen Pfad als dem, den du beabsichtigt hattest.  
  
MfG ChrisB  
  

-- 
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?