У меня есть загруженная в файл система в моем проекте php.Безопасный файл для загрузки
Что делать при загрузке:
1) Проверьте расширение файла и тип файла мим.
2) Если расширение и типа MIME разрешено типов, я сохраняю файл вне public_html
каталога, а затем, я даю возможность пользователям, скачать файл так:
if (file_exists($file_path)) {
header('Content-Description: File Transfer');
header('Content-Type: some mime type');
header('Content-Disposition: attachment; filename=somefilename');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file_path));
readfile($file_path);
}
Вопрос: это шаги для загрузки файла , безопасны или нет? Если нет, что может сделать дополнительно, для повышения безопасности при загрузке файла?
Спасибо.
+1 Да, вы можете переименовать все файлы в «безопасное» расширение, такое как '.txt', чтобы предотвратить их случайное выполнение на сервере и сохранить исходное имя файла в базе данных или, тем не менее, сохранить фактические двоичные данные в база данных, которая определенно предотвратит случайное выполнение. Вы также можете получить доступ к файлам для загрузки через другой домен ('download.example.com'), который предотвратит любые [XSS] (https://www.owasp.org/index.php/Cross-site_Scripting_ (XSS)) атакует ваш сайт, так как любой код JavaScript будет защищен Политикой одного и того же происхождения. – SilverlightFox