<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Teil des Codes hat nichts mit dem Inhalt des Artikels zu tun,Nur zum Beispiel Anzeige</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Willkommen, um diesen Artikel zu lesen!"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-comment"># Wie man benutzt md5_file Die Funktion ist in PHP Überprüfen Sie die Rechtmäßigkeit von Datei -Uploads?</span></span><span>
In der Website -Entwicklung,Die Datei -Upload -Funktion ist eine sehr häufige Anforderung。Jedoch,Sicherheit gewährleisten,Der Entwickler muss die hochgeladenen Dateien überprüfen,Verhindern Sie die Risiken von böswilligen Dateien -Uploads。PHP Bietet eine Vielzahl von Dateiüberprüfungsmethoden,In `md5_file` Funktionen sind einfach und effizient,Häufig verwendet, um die Integrität und Legalität der Datei zu überprüfen。
</span><span><span class="hljs-comment">## Was ist md5_file Funktion?</span></span><span>
`md5_file` Ja PHP 内置的Funktion,Wird verwendet, um die angegebene Datei zu berechnen MD5 Hash -Wert。MD5 Ja一种广泛使用的哈希算法,Sie können Daten von jeder Länge in eine Zeichenfolge festgelegt haben(</span><span><span class="hljs-number">32</span></span><span>Hexadezimalfiguren),Häufig verwendet, um die Dateiintegrität zu überprüfen。
Funktion原型如下:
```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>
$ Dateiname : Der Dateipfad, der berechnet werden muss
$ binär (optional): Ob das Ergebnis in Binärform zurückgegeben werden soll, wird die Standard -Hexadezimalzeichenfolge zurückgegeben
Wenn eine Datei hochgeladen wird, kann ein Angreifer böswilliger Code hochladen oder die Datei manipulieren. Durch die Berechnung des MD5 -Werts der hochgeladenen Datei können wir:
Stellen Sie sicher, dass die Datei während der Übertragung manipuliert oder beschädigt wurde
Vergleichen Sie den MD5 -Wert der hochgeladenen Datei mit dem MD5 der bekannten sicheren Datei, um festzustellen, ob die Datei legal ist
Verhindern Sie wiederholte Uploads derselben Datei (kann für Cache oder Deduplizierung verwendet werden).
Nachdem der Benutzer die Datei hochgeladen hat, speichert PHP die Datei in einem temporären Verzeichnis.
Verwenden Sie MD5_file , um den MD5 -Wert dieser temporären Datei zu berechnen.
Vergleichen Sie den berechneten MD5 mit der vordefinierten Liste der Hash -Werte für rechtliche Dateien.
Wenn es übereinstimmt, ist die Datei legal; Andernfalls wird das Hochladen abgelehnt.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Nehmen Sie eine vordefinierte Rechtsakte anMD5Value -Array</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">// Beispiel einer leeren Datei</span></span><span>
</span><span><span class="hljs-string">'5d41402abc4b2a76b9719d911017c592'</span></span><span>, </span><span><span class="hljs-comment">// BeispielMD5</span></span><span>
];
</span><span><span class="hljs-comment">// 检查文件Ja否上传成功</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">// Berechnen Sie die hochgeladene DateiMD5Wert</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">// UrteilMD5Ja否在合法列表中</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">"Datei hochladen legal,MD5Überprüfung verabschiedet。"</span></span><span>;
</span><span><span class="hljs-comment">// Hier können Sie nachfolgende Vorgänge wie Speichern von Dateien ausführen</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">"Datei -Upload ist illegal,MD5Überprüfung fehlgeschlagen。"</span></span><span>;
</span><span><span class="hljs-comment">// Hier können Sie die Datei löschen oder einen Fehler zurückgeben</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">"Es wurde keine Upload -Datei oder Upload -Fehler festgestellt。"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Es hat sich nachgewiesen, dass MD5 Kollisionsrisiken besteht und nicht für Szenarien mit hohen Sicherheitsanforderungen wie Passwörtern geeignet ist. Es gilt jedoch immer noch für die Überprüfung der Dateiintegrität, insbesondere beim Vergleich bekannter Dateien.
Um die Sicherheit zu verbessern, wird empfohlen, mehrere Überprüfungsmaßnahmen wie die Dateityperkennung (z. B. MIME -Typ), die Überprüfung der Dateierweiterung, die Beschränkung der Dateigrößen usw. zu kombinieren.
Wenn die Sicherheitsanforderungen höher sind, sollten Sie einen sichereren Hashing-Algorithmus wie SHA-256 ( Hash_File ('SHA256', $ Dateiname ) verwenden, um einen sichereren Hashing-Algorithmus zu verwenden.
Die Funktion MD5_File bietet ein einfaches und effektives Mittel zur sicheren Überprüfung von PHP -Datei -Uploads. Durch die Berechnung des MD5 -Werts der hochgeladenen Datei und des Vergleichs mit dem Hash -Wert der Rechtsdatei können illegale Dateien effektiv verhindert werden und die Sicherheit der Website ist sichergestellt. Die vernünftige Kombination anderer Sicherheitsmaßnahmen verbessert die Sicherheit des Datei -Upload -Moduls erheblich.
<hr> <? php // Der Artikel endet, fügen Sie ein irrelevantes PHP -Code -Beispiel Echo "Danke fürs Lesen!" An. ?> <span></span>