Es gibt ein Upload-Formular auf meiner Website. Ich schließe eigentlich Dateitypen nicht wirklich ein oder aus.Hochladen der Website verhindern Hacking
Statt dieses Ich verwende:
$fileUploadName = $target_dir.md5(uniqid($target_file.rand(),true)).".".$imageFileType;
dass der Dateityp halten aber den Dateinamen zu einem zufälligen kryptisch wie 790cd5a974bf570ff6a303c3dc5be90f
ändern.
Auf diese Weise kann ein Hacker keine hack.php
Datei hochladen und öffnen Sie es mit www.example.com/uploaded_files/hack.php
, weil es z. 790cd5a974bf570ff6a303c3dc5be90f.php
. Aus meiner Sicht ist es auf diese Weise absolut sicher. Habe ich Recht, dass es so sicher ist?
Ich denke nur eine selbst-ausführende Datei könnte ein Problem sein. Existieren selbst-ausführende Dateien überhaupt?
Anwendung [Kerckhoff-Prinzip] (https://en.wikipedia.org/wiki/Kerckhoffs erhalten 's_principle) "der Angreifer weiß alles über das System außer dem (kryptografischen) Schlüssel "könnte Ihr Angreifer wissen, dass Sie eine MD5-Prüfsumme des Dateinamens verwenden und daher den hochgeladenen Dateinamen ableiten können. –
Warum würden Sie unter keinen Umständen die Ausführung von hochgeladenen Dateien zulassen? – miken32
@ miken32 Ich verstehe nicht, was du meinst. Natürlich möchte ich vermeiden, dass ein Hacker eine Datei hochladen und dann ausführen kann. Um dies zu vermeiden, ändere ich den echten Dateinamen in etwas kryptisch mit md5 (uniqid ($ filename)). Ich hoffe, dass ein Hacker die Datei nicht über den Browser aufrufen und ausführen kann, weil er den (tatsächlichen) Dateinamen nicht kennt. Dies würde natürlich nicht funktionieren, wenn es sich um eine Self-Execution-Datei handelt. Aber tu es. Selbstausführungsdateien existieren überhaupt? – David