Heim  >  Artikel  >  Backend-Entwicklung  >  Vollständige Erklärung der PHP-Schwachstellen (9) – Sicherheitslücke beim Hochladen von Dateien

Vollständige Erklärung der PHP-Schwachstellen (9) – Sicherheitslücke beim Hochladen von Dateien

黄舟
黄舟Original
2016-12-22 09:47:541770Durchsuche

Bitte geben Sie die Quelle für den Nachdruck an: PHP Vulnerability Complete Solution (9) – Sicherheitslücke beim Hochladen von Dateien

Eine Reihe von Webanwendungen bieten im Allgemeinen eine Funktion zum Hochladen von Dateien, um Besuchern das Hochladen einiger Dateien zu erleichtern.

Das Folgende ist ein einfaches Datei-Upload-Formular



form>

php-Konfigurationsdatei php.ini, die Option upload_max_filesize gibt die Dateigröße an, die hochgeladen werden darf, der Standardwert ist 2M


$_FILES Array-Variable

PHP verwendet die Variable $_FILES, um Dateien hochzuladen. Wenn Sie test.txt hochladen, lautet der Inhalt des Arrays $_FILES:

$FILES

Array

{

[file] => ; Array
{
[name] => //Dateiname
[type] => php5D.tmp //Temporäre Datei
[error] => 0 //Fehlermeldung
[size] => 536 //Dateigröße in Bytes
}
}
Wenn Sie Laden Sie eine Datei hoch. Der Namensattributwert der Schaltfläche ist file

Dann verwenden Sie $_FILES['file ']['name '], um den Namen der vom Client hochgeladenen Datei ohne Pfad abzurufen. Verwenden Sie $_FILES['file']['tmp_name'], um den temporären Dateipfad abzurufen, in dem der Server die hochgeladene Datei speichert

Der Ordner, in dem die hochgeladene Datei gespeichert ist

PHP wird dies nicht direkt tun Speichern Sie die hochgeladene Datei im Stammverzeichnis der Website, speichern Sie sie jedoch als temporäre Datei mit dem Namen $_FILES['file']['tmp_name']. Der Entwickler muss diese temporäre Datei in den gespeicherten Website-Ordner kopieren .

Der Wert von $_FILES['file']['tmp_name'] wird von PHP festgelegt und unterscheidet sich vom ursprünglichen Namen der Datei. Entwickler müssen $_FILES['file']['name' verwenden. ] Rufen Sie den Originalnamen der hochgeladenen Datei ab.


Fehlerinformationen beim Hochladen von Dateien

Die Variable $_FILES['file']['error'] wird zum Speichern von Fehlerinformationen beim Hochladen von Dateien verwendet. Ihr Wert ist wie folgt:


Sicherheitslücke beim Hochladen von Dateien

Wenn Sie Website-Besuchern die Funktion zum Hochladen von Bildern zur Verfügung stellen, müssen Sie darauf achten, dass es sich bei dem, was der Besucher hochlädt, möglicherweise nicht tatsächlich um ein Bild, sondern um ein PHP-Programm handelt das kann angegeben werden. Wenn das Verzeichnis, in dem die Bilder gespeichert sind, ein offener Ordner ist, kann der Eindringling die hochgeladene PHP-Datei aus der Ferne ausführen, um den Angriff auszuführen.

Das Folgende ist ein einfaches Beispiel für das Hochladen einer Datei:




php
// Legen Sie das Verzeichnis zum Hochladen von Dateien fest
$uploaddir = "D : /www/images/";
// Überprüfen Sie, ob die Datei existiert
if (isset($_FILES['file1']))
{
// Der vollständige Pfad, in den sie eingefügt werden soll das Website-Verzeichnis, einschließlich des Dateinamens
$uploadfile = $uploaddir move_uploaded_file($_FILES[ 'file1']['tmp_name'], $uploadfile);
}
?>
……




form>




In diesem Beispiel gibt es kein Prüfdateisuffix, Sie können jede Datei hochladen und es liegt eine offensichtliche Sicherheitsanfälligkeit beim Hochladen vor Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn