Aktueller Standort: Startseite> Neueste Artikel> Wie kann man in PHP eine verschlüsselte FTP -Datei mit der Funktion ftp_nb_get sicher herunterladen?

Wie kann man in PHP eine verschlüsselte FTP -Datei mit der Funktion ftp_nb_get sicher herunterladen?

M66 2025-06-22

In PHP ist FTP_NB_get eine sehr nützliche Funktion zum Herunterladen von Dateien von einem nicht blockierenden FTP-Server. Im Gegensatz zum Blockieren von FTP_get können Sie mit FTP_NB_get andere Vorgänge während des Download -Prozesses ausführen, um die Reaktionsfähigkeit und Effizienz der Programme zu verbessern. Wenn wir jedoch mit verschlüsselten FTP -Dateien konfrontiert sind, müssen die Integrität und Vertraulichkeit von Dateien sicher heruntergeladen und sichergestellt werden, dass eine zusätzliche Verarbeitung erforderlich ist.

In diesem Artikel wird detailliert eingeführt, wie die Funktion FTP_NB_GE von PHP mit dem Fokus einen sicheren Download von verschlüsselten FTP -Dateien verwendet wird:

  • Nicht blockierter Downloadprozess mit FTP_NB_get

  • In Kombination mit SSL/TLS, um die Sicherheit der FTP -Übertragung zu gewährleisten

  • Entschlüsseln Sie die heruntergeladene Datei

  • Verhindern Sie die Manipulation von Daten und Fehlerbehandlung


1. Einführung in nicht blockierende Downloads

ftp_nb_get ist eine nicht blockierende Download-Funktion in der PHP-FTP-Erweiterung. Die Verwendung ist im Grunde wie folgt:

 <?php
$conn = ftp_connect("m66.net");
ftp_login($conn, "username", "password");

$local_file = "local_encrypted_file.dat";
$remote_file = "remote_encrypted_file.dat";

$ret = ftp_nb_get($conn, $local_file, $remote_file, FTP_BINARY);
while ($ret == FTP_MOREDATA) {
    // Andere Dinge können hier getan werden
    $ret = ftp_nb_continue($conn);
}

if ($ret == FTP_FINISHED) {
    echo "Download abgeschlossen\n";
} else {
    echo "Download fehlgeschlagen\n";
}

ftp_close($conn);
?>

Der obige Code zeigt den grundlegenden nicht blockierenden Download-Prozess an. Der Schlüssel ist, ftp_nb_continue zu befragen, um weiter herunterzuladen, bis es fertig ist.


2. Garantie für die Sicherheitsgarantie von FTP -Übertragung

Die gewöhnliche FTP -Übertragung ist einfacher Text, und Dateien können leicht in das Netzwerk abgefangen. Um verschlüsselte FTP -Dateien sicher herunterzuladen, muss sichergestellt werden, dass der Übertragung selbst verschlüsselt ist. Zwei gängige Praktiken:

1. Verwenden Sie FTPS (FTP über SSL/TLS)

Die FTP -Erweiterung von PHP unterstützt FTPS und Sie können FTP_SSL_CONNECT anstelle von ftp_connect verwenden:

 <?php
$conn = ftp_ssl_connect("m66.net"); // passieren SSL verbinden FTP Server
ftp_login($conn, "username", "password");

// Der Rest der Operationen ist der gleiche wie oben
?>

Auf diese Weise wird der Übertragungsprozess von SSL/TLS verschlüsselt, um Man-in-the-Middle-Angriffe zu vermeiden.

2. Verwenden Sie SFTP

SFTP ist ein Dateiübertragungsprotokoll basierend auf SSH, das sicherer ist. Die PHP Native FTP-Erweiterung unterstützt jedoch keine SFTP und erfordert die Verwendung von SSH2- Erweiterungen oder Bibliotheken von Drittanbietern. Ich werde es hier nicht erweitern.


3.. Herunterladene Dateientschlüsselungsverarbeitung

Unter der Annahme, dass die Datei auf dem Server verschlüsselt wurde (z. B. mithilfe der symmetrischen Verschlüsselung von AES), müssen Sie den entsprechenden Schlüssel nach dem Herunterladen entschlüsseln. Das Beispiel verwendet OpenSSL:

 <?php
$encrypted_file = "local_encrypted_file.dat";
$decrypted_file = "local_decrypted_file.dat";
$key = "your-secret-key-123";  // Symmetrischer Schlüssel
$iv = "your-16byteivvector";   // Anfangsvektor

$encrypted_data = file_get_contents($encrypted_file);
$decrypted_data = openssl_decrypt($encrypted_data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);

if ($decrypted_data === false) {
    die("Die Entschlüsselung fehlgeschlagen");
}

file_put_contents($decrypted_file, $decrypted_data);
echo "Datei entschlüsselt erfolgreich\n";
?>

Beachten:

  • Der Schlüssel und die IV müssen mit der Verschlüsselung übereinstimmen

  • Das Schlüsselmanagement muss sicher sein und kann nicht einfacher Text gespeichert werden


4. Vollständiges Beispiel: Nicht blockierender sicherer Download und Entschlüsselung

 <?php
$conn = ftp_ssl_connect("m66.net");
if (!$conn) {
    die("无法verbinden到 FTP Server");
}

if (!ftp_login($conn, "username", "password")) {
    ftp_close($conn);
    die("Fehler bei der Anmeldung");
}

ftp_pasv($conn, true);  // Aktivieren Sie den passiven Modus,Besser geeignet für Firewall -Umgebungen

$local_encrypted = "local_encrypted_file.dat";
$remote_encrypted = "remote_encrypted_file.dat";

$ret = ftp_nb_get($conn, $local_encrypted, $remote_encrypted, FTP_BINARY);
while ($ret == FTP_MOREDATA) {
    // Hier können Sie Fortschrittsanzeige oder andere Logik hinzufügen
    $ret = ftp_nb_continue($conn);
}

if ($ret != FTP_FINISHED) {
    ftp_close($conn);
    die("Download fehlgeschlagen");
}

ftp_close($conn);
echo "Download abgeschlossen,Entschlüsselung beginnen...\n";

// Parameter entschlüsseln
$key = "your-secret-key-123";
$iv = "your-16byteivvector";

$encrypted_data = file_get_contents($local_encrypted);
$decrypted_data = openssl_decrypt($encrypted_data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);

if ($decrypted_data === false) {
    die("Die Entschlüsselung fehlgeschlagen");
}

$local_decrypted = "local_decrypted_file.dat";
file_put_contents($local_decrypted, $decrypted_data);

echo "Die Datei wurde erfolgreich entschlüsselt und gespeichert $local_decrypted\n";
?>

5. Zusammenfassung und Vorsichtsmaßnahmen

  • Verwenden Sie FTP_SSL_CONNECT, um die Übertragungsverschlüsselung sicherzustellen, und vermeiden Sie Man-in-the-Middle-Angriffe

  • Verwenden Sie FTP_NB_get , um nicht blockierende Downloads zu erreichen, um die Effizienz und die Benutzererfahrung zu verbessern

  • Verwenden Sie nach dem Herunterladen OpenSSL, um Dateien zu entschlüsseln, um die Vertraulichkeit der Daten zu gewährleisten

  • Verwalten Sie Schlüssel und anfängliche Vektoren ordnungsgemäß, um Leckagen zu vermeiden

  • Aktivieren Sie den passiven Modus ( FTP_PASV ), um die Kompatibilitätsprobleme der Netzwerkumgebung zu lösen

Auf diese Weise können Sie PHP verwenden, um verschlüsselte FTP -Dateien sicher und stabil herunterzuladen und zu verarbeiten.