Shing, так ключевое действие в этом случае - отбрасывать входящие пакеты со всех сторонних адресов, кроме Cloudflare (+ адресов администраторов сервера, если они подключаются удалённо, а не через KVM-свитч). В таком случае никто, кроме Cloudflare и администраторов сервера не будет знать про наличие сервера за IP-адресом, если новый IP-адрес не утекал.
Ubuntu Server без графического интерфейса лучше поставить, смысл изучать окошечки под линуксом, лучше команды, которые могут потом неоднократно пригодиться.
И как вы себе это представляете, если в файле содержатся символы, не представимые в Windows-1251? В таком случае эти символы придётся либо вырезать, либо заменять на знаки вопроса, либо на специальную последовательность символов из какого-то другого формата (например, HTML-сущности), или оставить как есть, но выглядеть эти символы будут как мусор из нескольких других символов.
twentytvvo, не коллекционирую ссылки. Но принцип один - не доверять никаким данным, пришедшим извне. Всё что можно подделать - злоумышленник легко подделает. В случае с загружаемыми файлами - клиент передаёт поля name, type и содержимое файла, остальное (tmp_name, size, error) - просчитывается на сервере, потому доверять можно только полям tmp_name, size, error, остальные можно как-нибудь учитывать, но не верить им, их легко подделать.
На флешке может тупо отсутствовать загрузчик. В случае с современными материнками это не проблема - для UEFI достаточно раздела FAT32 с папкой EFI и загрузчиком в ней. А вот для старых BIOS такое не прокатит.
twentytvvo, какой фильтр? Имя файла генерируйте псевдослучайно (я обычно вычисляю как хэш от содержимого - это заодно обеспечивает дедупликацию), а расширение файла - из белого списка (обычно анализирую по сигнатуре файла и на её основе выбираю, для неизвестных типов можно какой-нибудь bin или txt, или запретить их загрузку). При таком подходе злоумышленник не сможет манипулировать именами файлов, даже если закинет туда зловред - тот будет просто валяться в папке мёртвым грузом без какого-либо исполняемого расширения файла и отдаваться на скачивание при открытии.
twentytvvo, это так кажется, что больше никто не пользуется, если намеренно не закрывали доступ извне никому кроме вас. Ботов, сканирующих сайты на уязвимости, ходит полно.
Вместо массы одинаковых вычислений, вынесите хотя бы для начала w/(h/100*h/100) в отдельную переменную - сразу станет на порядок проще и читабельнее)
Я уже молчу о том, что границы заданы абы как, что если окажется 24.95, попадающий между диапазонами [18.5, 24.9] и [25, 29.9].
И основное: сначала валидируем числа, а потом уже производим над ними арифметические операции.