HTML\CSSIframe и безопасность

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

<iframe src="http://example.com"></iframe>

Существует механизм, который предотвращает некоторые виды атак —принцип одинакового источника (Same Origin Policy). Если размещенное содержимое, принадлежит другому домену то вступает в действие ограничение, которое запрещает «чужеродному» содержимому доступ к DOM родительского документа. Таким образом размещенная в iframe страница не сможет прочитать, например, куки или локальное данные браузера родительского домена. Но существует риск фишинга.

В HTML5 к тегу iframe добавился атрибут sandbox, который позволяет управлять рядом ограничений. По умолчанию, iframe с атрибутом sandbox добавляет следующие ограничения:

Читать далее...

PHPpathinfo PATHINFO_FILENAME и русские имена файлов

Задача: получить имя загруженного файла без расширения (baseName). Используем код:

$file_name = pathinfo('Новый файл.doc', PATHINFO_FILENAME);

Получаем результат, » файл» вместо ожидаемого «Новый файл». Первое слово как будто выкидывает.

Решение: добавляем выше в коде:

setlocale(LC_ALL, 'ru_RU.utf8');

Локаль должна быть установлена в системе, проверить можно через: locale -a

Читать далее...

PHPАбстрактные классы vs Интерфейсы

Чем интерфейсы отличаются от абстрактных классов?

Абстрактный класс — это класс, у которого не реализован один или больше методов.

Интерфейс — это по-сути абстрактный класс, у которого не реализованы все методы, все методы являются публичными и не может быть свойств.

Читать далее...

WebDevИмперативное vs Функциональное программирование

Парадигма — это стиль написания исходного кода компьютерной программы. Существует несколько парадигм.

Императивное программирование (от англ. imperative — приказ) — это парадигма программирования, которая описывает процесс вычисления в виде инструкций, изменяющих состояние данных.

Программа — набор инструкций изменяющих состояние (данные). Мы говорим КАК выполнить задачу, описывает алгоритм, даем набор последовательных инструкций.

Читать далее...

PHPФреймворк или CMS?

Чистый php, фреймворк или CMS?

На глаза попалась хорошая аналогия авторства @mletov, привожу с небольшими изменениями.


Чистый php, фреймворк и CMS — это 3 уровня абстракции.

Предположим, домохозяйка решила приготовить пирог — пошла в магазин, купила готовое тесто, испекла пирог. Временные и трудовые затраты минимальны. Вкусовые качества пирога — заурядные, сойдет для школьной столовой, но не более. Так вот, это CMS.

Читать далее...