<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie du code n'a rien à voir avec le contenu de l'article,Seulement par exemple l'affichage</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Bienvenue à lire cet article!"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-comment"># Comment utiliser md5_file La fonction est dans PHP Vérifiez la légalité des téléchargements de fichiers?</span></span><span>
Dans le développement de sites Web,La fonction de téléchargement de fichiers est une exigence très courante。Cependant,Pour assurer la sécurité,Le développeur doit vérifier les fichiers téléchargés,Empêcher les risques de téléchargements de fichiers malveillants。PHP Fournit une variété de méthodes de vérification des fichiers,dans `md5_file` Les fonctions sont simples et efficaces,Couramment utilisé pour vérifier l'intégrité et la légalité des fichiers。
</span><span><span class="hljs-comment">## Qu'est-ce que md5_file fonction?</span></span><span>
`md5_file` Oui PHP 内置的fonction,Utilisé pour calculer le fichier spécifié MD5 Valeur de hachage。MD5 Oui一种广泛使用的哈希算法,Vous pouvez cartographier les données de n'importe quelle longueur dans une chaîne de longueur fixe(</span><span><span class="hljs-number">32</span></span><span>Personnages hexadécimaux),Couramment utilisé pour vérifier l'intégrité du fichier。
fonction原型如下:
```php
</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">md5_file</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$binary</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>)
</span></span>
$ nom de fichier : le chemin du fichier qui doit être calculé
$ binaire (facultatif): s'il faut renvoyer le résultat sous forme binaire, la chaîne hexadécimale par défaut est renvoyée
Lorsqu'un fichier est téléchargé, un attaquant peut télécharger du code malveillant ou falsifier le fichier. En calculant la valeur MD5 du fichier téléchargé, nous pouvons:
Vérifiez que le fichier a été falsifié ou endommagé pendant la transmission
Comparez la valeur MD5 du fichier téléchargé avec le MD5 du fichier sécurisé connu pour déterminer si le fichier est légal
Empêcher les téléchargements répétés du même fichier (peut être utilisé pour le cache ou la déduplication)
Après que l'utilisateur télécharge le fichier, PHP stocke le fichier dans un répertoire temporaire.
Utilisez MD5_FILE pour calculer la valeur MD5 de ce fichier temporaire.
Comparez le MD5 calculé avec la liste prédéfinie des valeurs de hachage de fichiers juridiques.
S'il correspond, le dossier est légal; Sinon, le téléchargement est refusé.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Assumer un dossier juridique prédéfiniMD5Tableau de valeur</span></span><span>
</span><span><span class="hljs-variable">$allowed_md5_list</span></span><span> = [
</span><span><span class="hljs-string">'d41d8cd98f00b204e9800998ecf8427e'</span></span><span>, </span><span><span class="hljs-comment">// Exemple de fichier vide</span></span><span>
</span><span><span class="hljs-string">'5d41402abc4b2a76b9719d911017c592'</span></span><span>, </span><span><span class="hljs-comment">// ExempleMD5</span></span><span>
];
</span><span><span class="hljs-comment">// 检查文件Oui否上传成功</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'upload'</span></span><span>]) && </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'upload'</span></span><span>][</span><span><span class="hljs-string">'error'</span></span><span>] === UPLOAD_ERR_OK) {
</span><span><span class="hljs-variable">$tmp_file</span></span><span> = </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'upload'</span></span><span>][</span><span><span class="hljs-string">'tmp_name'</span></span><span>];
</span><span><span class="hljs-comment">// Calculez le fichier téléchargéMD5valeur</span></span><span>
</span><span><span class="hljs-variable">$file_md5</span></span><span> = </span><span><span class="hljs-title function_ invoke__">md5_file</span></span><span>(</span><span><span class="hljs-variable">$tmp_file</span></span><span>);
</span><span><span class="hljs-comment">// JugementMD5Oui否在合法列表中</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-variable">$file_md5</span></span><span>, </span><span><span class="hljs-variable">$allowed_md5_list</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Fichier Téléchargement légal,MD5Vérification a été adoptée。"</span></span><span>;
</span><span><span class="hljs-comment">// Ici, vous pouvez effectuer des opérations ultérieures telles que la sauvegarde de fichiers</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le téléchargement de fichiers est illégal,MD5Échec de la vérification。"</span></span><span>;
</span><span><span class="hljs-comment">// Ici, vous pouvez supprimer le fichier ou renvoyer une erreur</span></span><span>
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aucun fichier de téléchargement ou erreur de téléchargement n'a été détecté。"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
MD5 s'est avéré avoir des risques de collision et ne convient pas aux scénarios ayant des besoins de haute sécurité tels que des mots de passe. Mais il est toujours valable pour la vérification de l'intégrité des fichiers, en particulier lors de la comparaison des fichiers connus.
Pour améliorer la sécurité, il est recommandé de combiner plusieurs mesures de vérification telles que la détection du type de fichier (telles que le type MIME), la vérification d'extension de fichier, la limitation de la taille du fichier, etc.
Si les exigences de sécurité sont plus élevées, envisagez d'utiliser un algorithme de hachage plus sécurisé, comme SHA-256 ( Hash_File ('Sha256', $ nom de fichier) )
La fonction MD5_FILE fournit des moyens simples et efficaces pour une vérification sûre des téléchargements de fichiers PHP. En calculant la valeur MD5 du fichier téléchargé et en la comparant à la valeur de hachage du fichier juridique, les fichiers illégaux peuvent être effectivement empêchés et la sécurité du site Web peut être assurée. La combinaison raisonnable d'autres mesures de sécurité améliorera considérablement la sécurité du module de téléchargement de fichiers.
<hr> <? php // L'article se termine, joignez un exemple de code php non pertinent echo "Merci pour la lecture!"; ?> <span></span>