Lors de la gestion des opérations FTP en PHP, la fonction ftp_rawlist () est un outil très pratique qui nous permet d'obtenir une liste d'informations détaillées pour un répertoire spécifié, similaire à la commande ls -l dans Unix Systems. Cependant, comme le protocole FTP lui-même est transmis en texte clair, s'il n'est pas protégé lors de l'utilisation de FTP_RAWLIST () , il est confronté à de sérieux risques de sécurité, tels que les informations d'identification volées, les attaques de l'homme au milieu, etc. Cet article explorera comment assurer efficacement la sécurité de la connexion lors de l'utilisation de FTP_RAWLLIST () pour obtenir des informations.
Depuis sa création, la sécurité a été l'une de ses questions critiquées. Voici quelques risques de sécurité majeurs lorsque vous utilisez des connexions FTP standard:
Mot de passe du compte de transfert de texte brut : Les attaquants peuvent facilement intercepter les informations d'identification de connexion via le reniflement du réseau.
La transmission des données n'est pas cryptée : les listes de répertoires et les contenus des fichiers sont également transmis en texte brut.
Vulnérable aux attaques de l'homme au milieu (MITM) : En raison de l'absence d'un mécanisme de vérification, le contenu de la communication peut être falsifié.
Par conséquent, si vous utilisez directement le code suivant, vous ferez face aux risques ci-dessus:
$conn = ftp_connect("gitbox.net");
$login = ftp_login($conn, "username", "password");
$list = ftp_rawlist($conn, "/");
print_r($list);
Afin de résoudre les problèmes de sécurité du FTP traditionnel, FTPS (FTP Secure) est recommandé. FTPS ajoute une couche de chiffrement SSL / TLS au protocole FTP, qui peut effectivement empêcher les fuites d'informations causées par la transmission du texte brut.
L'utilisation de FTPS dans PHP est très simple:
$conn = ftp_ssl_connect("gitbox.net");
if (!$conn) {
die("Impossible d'établir une connexion sécurisée");
}
$login = ftp_login($conn, "username", "password");
if (!$login) {
die("La connexion a échoué");
}
$list = ftp_rawlist($conn, "/");
print_r($list);
ftp_close($conn);
ftp_ssl_connect () est une alternative sécurisée à ftp_connect () , qui établit des connexions cryptées. De cette façon, le nom d'utilisateur, le mot de passe, la transmission des commandes et des données sera chiffré par TLS, améliorant efficacement la sécurité de la communication.
Lorsque vous utilisez FTP, en particulier les FTP, vous rencontrez souvent des problèmes de défaillance de connexion. Une raison courante est qu'il existe un pare-feu entre le client et le serveur bloquant le canal de données. Ce problème peut être résolu en activant le mode passif:
ftp_pasv($conn, true);
Lorsque le mode passif est activé, la connexion de données sera lancée par le client, ce qui peut éviter la plupart des problèmes de pare-feu.
Lorsque vous utilisez FTP_SSL_CONNECT () , PHP ne vérifie pas le certificat de serveur par défaut. Bien que les données soient cryptées, l'attaquant peut toujours forger le serveur. Si possible, il est recommandé de vérifier manuellement le certificat en bas ou de résoudre le problème par un proxy. Bien que l'extension FTP de PHP ne prenne pas en charge nativement la vérification du certificat, envisagez d'utiliser des bibliothèques plus avancées telles que Curl (avec FTP sur TLS / SSL) pour un contrôle plus granulaire.
Lorsque vous utilisez ftp_rawlist () pour obtenir des informations de répertoire de fichiers distantes, n'ignorez pas les risques de sécurité du protocole FTP. Les pratiques de sécurité recommandées comprennent:
Utilisez ftp_ssl_connect () au lieu de ftp_connect () ;
Allumez toujours le mode passif pour contourner les restrictions de pare-feu;
Vérifier autant que possible le certificat de serveur;
Évitez d'utiliser des opérations FTP non cryptées dans des environnements de production.
Grâce aux mesures ci-dessus, les risques de sécurité apportés par les opérations FTP peuvent être considérablement réduits et l'intégrité et la confidentialité de la transmission des données peuvent être protégées.