За прошедшие годы у PHP было много репутаций, но отсутствие безопасности как языка никогда не было одним из них.
Основная команда, несмотря на все ее недостатки, довольно быстро решает все вопросы безопасности, и обновление PHP до последней версии часто снимает все проблемы. Но конечные пользователи, такие как мы, склонны все портить. Мы не обновляем, мы используем устаревшие пакеты или пакеты с дырами в них, о которых мы не знаем, мы используем древние расширения … мы подвергаем себя риску некоторыми действительно творческими способами.
Советы, ресурсы и лучшие практики
Давайте начнем 2015 год не так ли? В этом посте будут перечислены важные ресурсы, которые вы должны иметь в своем мозгу / инструментальном поясе, прежде чем создавать что-либо с помощью PHP в 2015 году. Я сделаю все возможное, чтобы поддерживать этот пост в актуальном состоянии, поэтому он остается актуальным до бесконечности, но, как я уже сказал , я Вам понадобится ваша помощь.
Держите ваш PHP в актуальном состоянии
Когда я писал о раке, который является устаревшим кодом , я сосредоточился на коде приложения. Я все еще твердо верю, что вы никогда не должны развиваться до наименьшего общего знаменателя, иначе вы рискуете стать тем самым, что сдерживает прогресс вашего языка. Это не фокус этого раздела, хотя. Недавно последовало обсуждение новой версии.
CodeIgniter и WordPress придерживаются поддержки PHP 5.2 (версия, которая уже четыре года не работает и не должна существовать на чьем-либо сервере), и Энтони Феррара ответил в своем блоге . Прежде чем читать этот раздел, я умоляю вас сначала прочитать этот пост. Это важно.
То, что этот пост достиг, заставило некоторых людей лень обновляться.
Они выступали за устаревшую поддержку без учета ущерба, который они наносят экосистеме PHP. Энтони написал еще один пост, в котором он далее объясняет свои позиции, и закончил еще одним постом , в котором разбираются проценты установки старых версий PHP в Интернете, сравнивая их со списком стабильности, чтобы выяснить, сколько серверов, работающих под управлением PHP, небезопасно по умолчанию и взломанный — сегодня . Результаты пугают по меньшей мере.
Если вы что-то разрабатываете и используете что-то кроме последней основной версии PHP, я настоятельно призываю вас внимательно прочитать эти посты. Если ваш клиент по какой-либо причине настаивает на хосте X или версии Y, отошлите их к этим постам, обучите их и помогите им увидеть ошибки своих способов — расскажите им об уязвимостях, которые они представляют для своего проекта, и расскажите им о ужасы, которые могут случиться, если они не будут действовать, пока не стало слишком поздно. Обновление версии PHP — это не то, что вы должны сохранить в разделе «мы можем сделать это позже». Сделай это сейчас, и делай это часто.
Избегайте устаревших хостов
Вдохновленный вышеупомянутыми обсуждениями, Фил Стерджон составил таблицу текущих версий PHP, поддерживаемых различными хостами. Вы можете найти его на PhpVersions.info или, если вы хотите внести свой вклад и добавить некоторые пропущенные значения, на Github .
Я рекомендую вам избегать всех общих хостингов в целом — сейчас есть очень дешевые VPS-провайдеры, такие как DigitalOcean (не стесняйтесь проверять их по моей ссылке для ознакомления).
Не будь этими парнями. Это начинается невинно и просто, но когда вам в конечном итоге приходится одалживать партнера, когда он стирает белье, это перестает быть забавным.
Когда вы выбираете VPS, кроме того, что вы избавляетесь от совместного использования окружения со всеми остальными или подвержены нестабильности системы, представленной кем-то другим, настройка вашего собственного сервера с нуля — это интересный и полезный опыт, с которым вы должны быть знакомы. тем не мение. Кроме того, вы можете видеть в списке, что только у кого-то последняя версия PHP является версией по умолчанию — зачем соглашаться на что-либо, кроме новейшего программного обеспечения, при запуске нового проекта?
Принять HTTPS
Шифрование очень важно сегодня. Не только как средство защиты от правительственного шпионажа, но и как способ обеспечить защиту ваших клиентов и посетителей сайта и отсутствие утечки личных данных. Когда такие сторонники, как Илья Григорик и его сторонники TLS для Google, объявляют, что они будут отдавать предпочтение веб-сайтам с HTTPS в результатах поиска, нет никаких сомнений в отношении возрастающей важности HTTPS, даже для простых веб-сайтов.
Несмотря на то, что существуют обходные пути для получения HTTPS везде , на них не следует полагаться — мы как веб-разработчики несем ответственность за улучшение сети в целом. HTTPS не имеет прямого отношения к PHP, но всякий раз, когда вы начинаете новый проект PHP, обычно проще настроить сервер на использование HTTPS до начала кодирования, а не в середине проекта. Чтобы помочь вам справиться с этой часто загадочной, пугающей и обескураживающей задачей (по крайней мере до выхода Let’s Encrypt ) Крис Палмер составил этот Google Doc .
Защитите свой PHP
Не будь этими парнями .
Следуйте рекомендациям в области защиты паролем, генерации, шифрования и аутентификации. Читайте книги и используйте пакеты, подобные тем, которые предлагаются на сайте SecuringPHP .
Оставайтесь на правильном пути
PHP Правильный путь отвечает за улучшение жизни многих проектов PHP. В виде книги или в цифровом формате PTRW является незаменимым ресурсом, позволяющим убедиться в том, что вы готовы справиться с задачами современной разработки приложений. Если вы чувствуете, что чего-то не хватает или просто хотите внести исправления опечаток или использовать альтернативные ресурсы и руководства, не стесняйтесь делать это через Github .
Избегайте плохих пакетов
Почти два года назад Фабьен Потенцер, известный в Symfony, объявил о создании списка уязвимых пакетов для PHP . Спустя полтора года это стало стандартной частью Symfony и было превращено в общедоступную собственность с открытым исходным кодом. Теперь вы можете опубликовать файл composer.lock в их API, веб-интерфейсе или даже в инструменте CLI, и он проверит ваш проект на наличие уязвимостей. Тем не менее, это все еще требует одного шага от конечных пользователей, и мы ленивые, ленивые люди.
Вступи в команду Роав, самый ленивый из нас. Они создали пакет рекомендаций по безопасности , который использует эту базу данных известных уязвимостей. Как объясняет Марко Пиветта в своем посте в блоге, вы требуете его в своем проекте, как и любой другой пакет, но вместо того, чтобы загружать что-либо, пакет служит метапакетом, не загружая ничего и вместо этого проверяя, требуются ли плохие версии в вашем пакете. проект. Он предупредит вас и предотвратит даже попытку загрузки этих пакетов, сэкономив вам не только этап проверки, но и этап, который также включает их удаление.
Я призываю всех, кто занимается разработкой PHP, включать это в свои проекты. Совместными атаками на общие векторы отсутствия безопасности мы будем на один шаг ближе к устранению дыр в безопасности в больших масштабах.
Увернуться от распространенных ошибок
Мы уже составляли списки распространенных ошибок. Прочитайте следующие посты, чтобы узнать, чего следует избегать:
- Список TopTal 10 самых распространенных ошибок PHP-программистов
- Еще 7 ошибок, обычно совершаемых разработчиками PHP
- 18 критических упущений в веб-разработке
Имея это в виду, вы спасете себя от неприятностей и больших головных болей в будущем.
Виртуализация
Используйте Vagrant! Даже PTRW так говорит.
Vagrant помогает вам запускать клонированные среды на небольших виртуальных машинах без головы, которые перенаправляют запросы на порты внутри машины, позволяя вам без помех использовать браузер вашего хоста и IDE вашего хоста. Хотите разместить виртуальную машину внутри виртуальной машины? Вы тоже можете это сделать, и все это совершенно безопасно! У нас есть куча учебных пособий и объяснений Vagrant под тегом Vagrant , поэтому, если вы не уверены в технологиях, прочитайте.
Здесь, в SitePoint, у нас есть официально одобренный форк коробки Homestead Vagrant (подготовленный Тейлором Отвеллом из Laravel, но совместимый с любым фреймворком и PHP-приложением) под названием Homestead Improved . Он запускается менее чем за пять минут, и вы будете иметь полностью инкапсулированную среду PHP для игры, не боясь испортить вашу хост-систему или другие проекты. Сделал ошибку? Просто уничтожьте, восстановите, и через несколько минут вы вернетесь к тому, с чего начали (без потери кода)!
Обратите внимание, что мы используем этот блок во всех наших уроках, поэтому знакомство с ним теперь сэкономит вам некоторое время в долгосрочной перспективе и поможет вам с легкостью выполнять все, что мы делаем, не говоря уже о его эффекте ». будет иметь на вашей локальной среде разработки.
Blackfire.io
Blackfire.io — это сервис от SensioLabs, ребят, отвечающих за инфраструктуру Symfony и все связанные с ней технологии. Это прозрачный профилировщик с минимальными издержками, способный анализировать ваш код и предупреждать вас о проблемах со всем, начиная с логического потока приложения и заканчивая взаимодействиями с механизмами БД и даже уровнем кэша. Blackfire уже установлен в упомянутой выше коробке Homestead Improved, так что если вы используете нашу коробку или оригинальную Homestead, все готово!
Поймать проблемы, прежде чем они бросают ключ в производство! Более подробные учебники о Blackfire в ближайшее время!
Вывод
Мы рассмотрели некоторые важные ссылки и ресурсы для правильного запуска PHP-проектов 2015 года с учетом производительности и безопасности. Если вы уже используете все эти подходы, это хорошо для вас — вы можете помочь нам распространить информацию. Расскажите об этом друзьям и кругам разработчиков, направьте их сюда, укажите новичкам, которые спрашивают вас, как начать наш путь, и обращайтесь к конкретным ссылкам в посте всякий раз, когда кто-то говорит вам, что устаревший код должен поддерживаться, и старые версии PHP хороши. , Отправьте их сюда, и мы начнем!
Не согласен с любым из них? Не могли бы вы добавить несколько важных ресурсов, о которых мы уже не упоминали? Дайте нам знать — я позабочусь о том, чтобы список обновлялся!