Wie kann ich beim Speichern von Remote-Bildern mit PHP prüfen, ob das Bild vor dem Speichern legal ist?

WBOY
Freigeben: 2023-07-12 20:18:02
Original
1028 Leute haben es durchsucht

Wie kann ich vor dem Speichern prüfen, ob das Bild legal ist, wenn ich PHP zum Speichern eines Remote-Bildes verwende?

Während der Entwicklung müssen wir häufig Remote-Bilder speichern, z. B. beim Crawlen von Bildern auf Webseiten, beim Hochladen von Avataren durch Benutzer usw. Um jedoch die Sicherheit des Servers zu gewährleisten und unnötige Ressourcenverschwendung zu vermeiden, müssen wir vor dem Speichern von Remote-Bildern eine Legalitätsprüfung durchführen. In diesem Artikel wird erläutert, wie Sie mit PHP die Rechtmäßigkeit von Bildern vor dem Speichern überprüfen und entsprechende Codebeispiele bereitstellen.

1. Überprüfen Sie die Rechtmäßigkeit des Bildes
Bevor wir das Remote-Bild speichern, müssen wir sicherstellen, dass das Bild legal ist, und das Speichern schädlicher Skripte oder nicht unterstützter Dateiformate vermeiden. Hier sind einige gängige Prüfmethoden:

  1. Überprüfen von Dateierweiterungen
    Dateierweiterungen sind eine einfache Möglichkeit, den Dateityp zu bestimmen. Normalerweise können wir die Pathinfo-Funktion von PHP verwenden, um die Dateierweiterung abzurufen und sie mit den unterstützten Bildformaten zu vergleichen. Sie können die Funktion in_array verwenden, um festzustellen, ob das Dateisuffix innerhalb des zulässigen Bereichs liegt, wie unten gezeigt:
$allowedExtensions = array('jpg', 'jpeg', 'png', 'gif'); // 允许的图片格式
$extension = pathinfo($imageUrl, PATHINFO_EXTENSION); // 获取文件后缀名

if (!in_array(strtolower($extension), $allowedExtensions)) {
    die('Invalid file format');
}
Nach dem Login kopieren
  1. Überprüfen Sie das Dateiformat
    Zusätzlich zur Überprüfung des Dateisuffixes können wir auch das Dateiformat ermitteln die Datei-Header-Informationen. Bevor Sie das Remote-Image speichern, können Sie mit der PHP-Funktion get_headers eine HEAD-Anfrage senden, um die Antwort-Header-Informationen abzurufen. Anschließend können wir das entsprechende Content-Type-Header-Feld entsprechend den verschiedenen Dateiformaten festlegen und es dann mit den unterstützten Bildformaten vergleichen. Hier ist ein Beispielcode:
$responseHeaders = get_headers($imageUrl);
$contentType = '';

foreach ($responseHeaders as $header) {
    if (strpos($header, 'Content-Type:') === 0) {
        $contentType = substr($header, 14);
        break;
    }
}

$allowedContentTypes = array('image/jpeg', 'image/png', 'image/gif');
if (!in_array($contentType, $allowedContentTypes)) {
    die('Invalid file format');
}
Nach dem Login kopieren
  1. Dateigröße prüfen
    Um das Speichern übermäßig großer Bilder zu vermeiden, können wir die Größe der hochgeladenen Datei begrenzen. Sie können die Dateigrößenfunktion von PHP verwenden, um die Dateigröße zu ermitteln und sie dann mit dem festgelegten Maximalwert zu vergleichen. Das Folgende ist ein Beispielcode:
$maxFileSize = 2 * 1024 * 1024; // 最大文件大小为2MB
$fileSize = filesize($tempFilePath);

if ($fileSize > $maxFileSize) {
    die('File size too large');
}
Nach dem Login kopieren

2. Speichern Sie das Remote-Bild
Nachdem wir die Rechtmäßigkeit des Remote-Bildes bestätigt haben, können wir die Funktion file_put_contents von PHP verwenden, um das Bild auf dem Server zu speichern. Das Folgende ist ein Beispielcode:

// 获取远程图片内容
$imageData = file_get_contents($imageUrl);

// 生成保存路径和文件名(可根据实际需求修改)
$savePath = 'path/to/save/directory/';
$saveFileName = uniqid() . '.' . $extension;
$saveFilePath = $savePath . $saveFileName;

// 保存图片
if (file_put_contents($saveFilePath, $imageData)) {
    echo 'Save successfully';
} else {
    echo 'Save failed';
}
Nach dem Login kopieren

Oben erfahren Sie, wie Sie vor dem Speichern prüfen, ob das Bild legal ist, wenn Sie PHP zum Speichern eines Remote-Bildes verwenden. Durch die Überprüfung der Dateierweiterung, des Dateiformats, der Dateigröße usw. können Sie die Sicherheit des Servers erhöhen und sicherstellen, dass die gespeicherten Bilder legal sind. Ich hoffe, dieser Artikel kann Ihnen helfen.

Das obige ist der detaillierte Inhalt vonWie kann ich beim Speichern von Remote-Bildern mit PHP prüfen, ob das Bild vor dem Speichern legal ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage