Maison >interface Web >js tutoriel >Comment les navigateurs peuvent-ils vérifier de manière fiable les types MIME avant le téléchargement de fichiers ?

Comment les navigateurs peuvent-ils vérifier de manière fiable les types MIME avant le téléchargement de fichiers ?

DDD
DDDoriginal
2024-12-02 04:12:14224parcourir

How Can Browsers Reliably Check MIME Types Before File Upload?

Comment fonctionne la vérification MIME côté navigateur et pourquoi c'est délicat

JavaScript peut déterminer les types MIME de fichiers avant qu'ils ne soient téléchargés, mais validez-les côté serveur pour des raisons de sécurité.

Étape 1 : Utilisez FileReader API

Pour obtenir des informations sur le fichier :

var files = document.getElementsByTagName('input')[0].files;
console.log(files[0].type);

Étape 2 : Extraire le type MIME

Méthode 1 : Utiliser Blob (Peut être trompé par le fichier extension)

console.log(files[0].type);

Méthode 2 : Inspection d'en-tête (Plus fiable)

var fileReader = new FileReader();
fileReader.onloadend = function(e) {
  var header = (new Uint8Array(e.target.result)).subarray(0, 4).toString(16);
  switch (header) {
    case "89504e47":
      type = "image/png";
      break;
    case "47494638":
      type = "image/gif";
      break;
    case "ffd8ffe0":
    case "ffd8ffe1":
    case "ffd8ffe2":
      type = "image/jpeg";
      break;
    default:
      type = "unknown";
      break;
  }
};
fileReader.readAsArrayBuffer(files[0]);

Remarque :

  • Les extensions de fichiers peuvent être falsifiées, l'inspection des en-têtes est donc plus fiable.
  • Les nombres magiques peuvent varier selon le type de fichier.
  • La validation côté serveur est toujours essentielle pour la sécurité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn