21 и 22 мая пройдёт конференция Highload++ Junior. Задумка её очень интересная — рассказать не очень подготовленным слушателям о том, как справиться с нагрузками. То есть от и до. Я буду рассказывать про горизонтальное масштабирование PHP приложений и всё, что с этим связано.
-
Highload++ Junior
7 мая 2015
-
Yii 2.0 HP Fortify WebInspect SQL Injection: Blind
10 апреля 2015
Знакомые попросили проверить отчёт сканирования приложения Yii 2.0 на безопасность. Среди прочего HP Fortify WebInspect нашёл "SQL Injection: Blind" по URL:
http://example.com/post/view?id=10%27%09and%091%09%3d%09if(5%3d5%2c%09sleep(200)%2c%090)%09and%09%271%27%3d%271
что расшифровывается как
`10' and 1 = if(5=5, sleep(2000), 0) and '1'='1`
То есть классически закрыли кавычку и т.д.
Сделал тестовое приложение, запустил, получил страницу с постом с id = 10. То есть сканер среагировал на то, что нет ошибки или 404. Возможно, что SQL injection прошёл успешно.
Полез в код, там ничего особенного:
public function actionView($id) { $model = News::findOne($id); if (!$model) { throw new HttpException(404); } return $this->render('index', ['model' => $model]); }
Полез глубже и убедился, что параметр не вставляется в SQL. Используется prepared statement, всё как положено. Задумался.
Выполнил в консольке MySQL вот такое:
select * from post WHERE id = '10lalalallala';
Получил запись с id = 10 и вспомнил, что MySQL приводит строки к int-у почти как PHP. То есть, что бы мы не вставили после 10, MySQL переварит и не поперхнётся.
В итоге:
- С Yii всё хорошо.
- HP Fortify нашёл то, чего нет, и пометил как критическое.
-
Видео с лекции по архитектуре Yii 2 от Павла Климова
3 апреля 2015
Павел Климов, член основной команды разработчиков Yii, провёл лекцию по архитектуре Yii 2. Zfort Group выложили видео:
-
Yii 2 собирается разделить репозиторий
21 марта 2015
Для ускорения процесса релизов и того, чтобы придать официальным расширениям большую независимость мы думаем разделить расширения и шаблоны приложений на отдельные проекты GitHub. Ниже приведён предварительный план. Прежде чем что-либо менять мы хотели бы услышать ваше мнение и возможные предложения. Спасибо!
UPD: отклик был положительный, разделили.
-
Слайды с Dump 2015
21 марта 2015
Dump прошёл отлично. Отличный уровень организации, классные стенды, интересные доклады.
На этот раз я рассказывал про HHVM, а не про Yii. Прошло хорошо.
-
yii2-shop, код с мастер класса в Екатеринбурге
10 марта 2015
Немного привёл в порядок и выложил код с мастер класса в Екатеринбурге. В нём отражена попытка создать витрину магазина на основе шаблона advanced.
-
HTTP/2
3 марта 2015
17 февраля 2015 вторая версия HTTP стала кандидатом на стандарт и уже поддерживается в Chrome (
--enable-spdy4
), Firefox, IE 11.Изменения, по сравнению с 1.1, значительные и серьёзно повлияют на веб-разработку в целом.
HTTP/2 основан на SPDY. То есть используется одно TCP соединение для передачи в обе стороны нескольких запросов-ответов. Передаваемое при этом, включая заголовки, представляется в сжатом бинарном виде. В дополнение сервер может заранее отсылать не связанные с открытой страницей ресурсы в кэш браузера.
То есть такие техники как спрайты, сжатие и сборка CSS/JS в один файл, отдельный домен без cookie для ресурсов, несколько доменов для ресурсов, становятся не нужны и даже вредны. Правильно будет отдавать ресурсы мелкими порциями только когда они реально нужны. То есть чтобы для каждой отдельно взятой страницы количество загружаемых ресурсов было минимальным.
-
Yii 2.0.3
2 марта 2015
Точно в срок вышел релиз PHP фреймворка Yii версии 2.0.3. В данную версию вошли около 50 улучшений и исправлений.
Подробнее можно почитать в анонсе на хабре.
-
Как поставить расширение на Yii 2.0 без Composer
24 февраля 2015
Не первый раз спрашивают, как поставить расширение Yii 2.0 без Composer. Отвечаю.
Ставить будем yii2-imperavi-widget.
- Идём в https://github.com/vova07/yii2-imperavi-widget/releases, забираем архив.
- Смотрим его
composer.json
. - Там у нас есть секция autoload, в ней упоминание PSR-4 и
vova07/imperavi
. - Распаковываем файлы в
vendor/vova07/imperavi
. - В
vendor/composer/autoload_psr4.php
добавляем:
'vova07\\imperavi\\' => array($vendorDir . '/vova07/imperavi/src'),
- В
vendor/yiisoft/extensions.php
добавляем:
'vova07/imperavi' => array ( 'name' => 'vova07/imperavi', 'version' => '2', 'alias' => array ( '@vova07/imperavi' => $vendorDir . '/vova07/imperavi/src', ), ),
Всё это делает за вас Composer. Лучше изучите его и не теряйте время.
-
Буду на Dump 2015 в Екатеринбурге
23 февраля 2015
20 марта 2015 буду в Екатеринбурге на конференции Dump. Расскажу в секции «serverside light» про HHVM: зачем он Facebook, как он развивался, как устроен, можно ли использовать и насколько безболезненно. Также упомяну про HACK, phpng и другие занятные штуки.
Вообще программа интересная, должно быть круто.