Heim >Web-Frontend >js-Tutorial >Wie können Browser MIME-Typen vor dem Hochladen von Dateien zuverlässig prüfen?

Wie können Browser MIME-Typen vor dem Hochladen von Dateien zuverlässig prüfen?

DDD
DDDOriginal
2024-12-02 04:12:14222Durchsuche

How Can Browsers Reliably Check MIME Types Before File Upload?

Wie die browserseitige MIME-Überprüfung funktioniert und warum sie schwierig ist

JavaScript kann Datei-MIME-Typen vor dem Hochladen ermitteln, diese aber validieren auf der Serverseite aus Sicherheitsgründen.

Schritt 1: Verwenden Sie FileReader API

So erhalten Sie Dateiinformationen:

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

Schritt 2: MIME-Typ extrahieren

Methode 1: Verwenden von Blob (Kann durch Datei getäuscht werden Erweiterung)

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

Methode 2: Header-Inspektion (Zuverlässiger)

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]);

Hinweis:

  • Dateierweiterungen können gefälscht werden, sodass die Header-Inspektion zuverlässiger ist.
  • Magische Zahlen können variieren je nach Dateityp.
  • Serverseitige Validierung ist für die Sicherheit immer noch unerlässlich.

Das obige ist der detaillierte Inhalt vonWie können Browser MIME-Typen vor dem Hochladen von Dateien zuverlässig prüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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