Архив за месяц: Январь 2014

PHP_SELF и XSS инъекция

Инъекция - это может быть больно!Если вы столкнулись с кучей ошибок 404, в которых фигурировали искажённые урл, как будто туда была вставлена какая-то абракадабра, или может увидели такую ошибку:

Newline found in PHP_SELF variable which might cause possible injection '_ВАШ_URL_'

Тогда вам надо прочитать этот пост. Предупреждён — значит вооружён!

К сожалению я не нашёл информации о XSS инъекции через PHP_SELF на русском языке, поэтому тут я размещу перевод одной путёвой статьи. Итак:
Читать далее

Как разговаривать с клиентом, если у него страница не работает в MSIE

БраузерыСделал страницу, пришла пора сдавать её и вдруг кого-то дёрнуло посмотреть её в MSIE….

Наверняка было такое?

Тут я размещаю аргументацию, которую надо осуждать с клиентом, если хотите его убедить не исправлять работу под очередной косячный браузер.

Статистика использования браузера

Вот тут можно посмотреть статистику использования браузеров в русскоязычной части интернета.

Читать далее

Безопасность при загруке файлов

МиротворецФорма загрузки файлов на сервер — это одно из самых слабых мест в защите сайта и должно быть прикрыто с многократным запасом. Думаю не нужно объяснять читателю, что может сделать злоумышленник, если зальёт к вам на сайт PHP-шелл под видом безобидной картинки.

Content-Type
=======================
Первое что можно проверить при загрузке файла — это Content-Type. Это могло бы помочь нам отсечь неправильный тип файлов. Однако помнить, что Content-Type формируется клиентской стороной, а значит может быть подделана, поэтому нам это не годится.
Читать далее

Kohana. Немного мыслей о дефолтном роутинге

Роутинг
Во всех мануалах по Kohana, в которых рассматривается роутинг, говорится, что сначала надо размещать специфические роуты, потом должны следовать роуты всё более и более общие.

И наконец должен быть роут по-умолчанию, на случай, если ни один из предыдущий не подошёл.

Приводится примерно такой пример:

Route::set('default', '((/(/)))')
->defaults(array(
    'controller' => 'welcome',
    'action'     => 'index',
));

Читать далее

Kohana. Модуль обработки ошибок

Обработчик ошибок моей мечты

Жил был один проект. Его делали долго, а в течение периода разработки поменялся с десяток разработчиков. В общем проект запутанный, сложный, но уже работающий. Однажды мы решили добавить отсылку подробной информации об ошибке на email.

Я как-то писал, про то как дёшево и сердито сделать свои страницы для отображения ошибок . Так мы просто дописали нужный код в шаблон. Не комильфо, но работало.

Это оказалось ужасно полезным, поскольку мы сразу начали получать просто тонны ошибок, которые мы в обычной ситуации даже не могли представить! Это позволило нам существенно улучшить качество кода.

С тех пор я решил всегда добавлять в свои проекты такую фишку. Я посмотрел пачку готовых модулей обработки ошибки на гитхабе, разобрал их и … решил написать свой

Читать далее