Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Arno Welzel Newsgroups: de.comp.lang.php Subject: Re: PHP speichert manche Dateien mit ?-Suffix ab. Date: Sun, 8 Apr 2018 18:05:37 +0200 Lines: 69 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net T0qKAp0LRyex7d/zqdIx5wfpTu5GPAX+qTdLrrOl4rVe+QTy+J Cancel-Lock: sha1:bxjUVnuDf5HtRMioivZ5DZ++Jc4= Openpgp: preference=signencrypt In-Reply-To: Xref: csiph.com de.comp.lang.php:4339 Tom Wallenfang: > Am 07.04.2018 um 20:58 schrieb Arno Welzel: >> Zeige den relevanten Code. > > $txt = shell_exec('ls -d */'); > echo $txt; > echo "
"; > echo "
"; > echo "
"; > echo ""; > echo "
"; > $ordner = "test/"; // Normalerweise ebenfalls $_POST[], aber zum > testen umgeändert Aua! Nein - sowas bitte NIEMALS machen! Inahlte von außen, wie $_POST[...] darf man grundsätzlich NIEMALS direkt als Vorlage für Dateinamen etc. nutzen. Ein Angreifer kann dein Script ebenfalls aufrufen und für die entsprechenden Parameter *beliebigen* Inhalt übergeben, auch solchen, die Pfadtrenner "/" oder "\" und ".." oder "..." enthalten. > $text = $_POST["input"]; > if($text!="") // bzw. wenn Seite zum ersten mal aufgerufen wird. > { > $urln = $ordner . "n"; // "test/n" enthält die Nummerdatei bzw. > den Dateinamen für den neuen Eintrag > > $readnum = fopen("$urln", "r") or die("Tot."); Besser: $readnum = fopen($urln, "r") or die("Tot."); Es gibt keinen vernünftigen Grund, eine einzelne Variable in Anführungszeichen zu setzen, wenn man als Parameter den Inhalt der Variablen nutzen will. Mir scheint auch, Du zeigst nicht den wirklichen Code. Denn das gezeigte legt einfach nur die Datei "n" im Ordner "test" an. Wo da noch ein "?" herkommen soll, ist völlig unklar. > $nummerp = fread($readnum,filesize($urln)); > fclose($readnum); > $nummer = $nummerp; > $nummerp = $nummerp + 1; > $url = $ordner . $nummer; // Der Dateiname [...] > $texts = fopen("$url", "w"); // Schreibt den Text Auch hier wieder: warum "$url" und nicht einfach $url? Und wer garantiert, dass der Inhalt der gelesenen Datei wirklich eine Zahl enthält und $nummer korrekt gesetzt ist? Ich glaube, Du hast PHP nicht wirklich verstanden. Kann das sein, das Du noch ein Anfänger bist? -- Arno Welzel https://arnowelzel.de https://de-rec-fahrrad.de http://fahrradzukunft.de