Все, что связано с PHP, будет иметь заметное снижение производительности, особенно если вы проверяете базу данных для проверки учетных данных и т. Д.
Вы можете улучшить свой код, установив правильные заголовки кэша и т. Д. Но на самом делеЛучшее решение состоит в том, чтобы позволить apache обслуживать изображения как статические файлы.Apache невероятно хорош в обслуживании статических файлов, вы никогда не будете создавать PHP-скрипт, который работает так же хорошо, как Apache.
Один из способов обеспечить разумную защиту статических файлов - это поместить очень длинную и случайную строку вURL.Поэтому вместо:
./php/getfile.php?file=xyz-thumb.jpg
Используйте это как URL:
./files/usBmN5CssIL47qRroC77n90juaQoREThBbFZUddGneEH5jOuX6JpU5cH6zH1Xa5-thumb.jpg
И убедитесь, что индексы каталогов запрещены (чтобы пользователь не мог просто посетить ./files/
.
Со случайным длинным именем файла, даже если хакер смог угадать миллиард URL-адресов в секунду , вселенная все равно бы закончилась задолго до того, как угадал все возможные URL-адреса.
Если вы беспокоитесь о том, что поисковые системы / etc каким-то образом индексируют URL-адреса файлов после какого-либо другого нарушения безопасности, вы можете поместить все файлы в каталог с другим случайным именем - и регулярно менять имя этого каталога (возможно, ежедневно, возможно, каждые 10 минут).В этом случае вам следует оставить старый функционал URL на короткое время после его переименования (возможно, с помощью символической ссылки на новое имя каталога?).
На первый взгляд это может показаться менее безопаснымчем проверка учетных данных пользователя. Но на самом деле, случайное имя файла вроде этого намного более безопасно, чем любое имя пользователя / пароль.