Как стать автором
Обновить

Strain It! — Валидация и приведение данных на PHP

Время на прочтение 6 мин
Количество просмотров 3.6K
Разработка веб-сайтов *
Из песочницы

Введение


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

Но после того как я перешел на PHP 5.3 меня потянуло написать новый валидатор на основе анонимных функций. А заодно еще раз потренироваться в их использовании. Мною ставились следующие требования к будущему классу:
  • Декларативность (информация о валидации должна задаваться объектами/массивами)
  • Гибкость (высокая эффективность кода, написанного с помощью этого класса)
  • Скорость (ничего лишнего)

Уже после начала работ, мне пришла в голову мысль о том, что анонимные функции в этом классе можно использовать не только для валидации, но и для приведения данных к нужному виду (например к определенному типу). Добавив к списку требований еще одно («Универсальность») я смело переименовал класс в Strain.

Что же в итоге получилось… читаем ниже. Здесь я не буду претендовать на оригинальность решения и прочую ерунду. Если вам понравится такой подход, используйте его в своих проектах, а если нет — то нет. Для отчаянных любителей извращений исходники я опубликую в конце статьи.
Читать дальше →
Всего голосов 19: ↑12 и ↓7 +5
Комментарии 25

Использование XSLT для предотвращения XSS путем фильтрации пользовательского контента

Время на прочтение 9 мин
Количество просмотров 7.2K
XSLT *
Recovery mode
Из песочницы

Формулировка проблемы


Думаю никому из веб-разработчиков не нужно объяснять что такое XSS и чем он опасен. Но в то же время, многие сайты, такие как форумы, блоги, социальные сети и т.п., стремятся предоставить пользователю возможность вставлять на страницу свой контент. Для удобства неискушенных пользователей изобретаются WYSIWYG-редакторы, делающие процесс добавления красивого комментария легким и приятным. Но за всем этим фасадом скрывается угроза безопасности. Фактически любой WYSIWYG-редактор отправляет на сервер не просто текст комментария, он отправляет HTML-код. И даже если сам редактор не предусматривает использования опасных HTML-тегов (например <iframe>), то злоумышленника это не остановит — он может послать на сервер произвольный HTML-текст, который может представлять опастность для других посетителей сайта. Я думаю мало кому понравится получить в свой браузер что-то наподобие:
<script type="text/javascript">window.location="http://hardcoresex.com/";</script>

Таким образом, возникает проблема: полученный от пользователя HTML-код необходимо фильтровать. Но что значить «фильтровать»? Каким должен быть алгоритм фильтрации, чтобы не создавать необоснованных ограничений легальным пользователям, но в то же время сделать невозможной XSS-атаку со стороны злоумышленника? Увы, но HTML достаточно сложен, написать хороший парсер достаточно непросто, а любая ошибка в нем может привести к тому, что у злоумышленника появится лазейка через которую он сможет нанести удар.
Узнать больше
Всего голосов 26: ↑24 и ↓2 +22
Комментарии 20

DevExtreme: фильтруем данные на графике

Время на прочтение 3 мин
Количество просмотров 8K
Блог компании Developer Soft Разработка веб-сайтов *Программирование *Визуализация данных *


Фильтрация данных по аргументу — одна из самых распространенных задач при работе с графиком. Именно поэтому так важно наличие простых и удобных способов фильтрации в каждой библиотеке, предназначенной для визуализации данных.
А как фильтруют в DevExtreme?
Всего голосов 26: ↑24 и ↓2 +22
Комментарии 2

Компания «Яндекс» получила патентный иск от Fellowship Filtering Technologies

Время на прочтение 2 мин
Количество просмотров 5.2K
Управление e-commerce *Управление продуктом *Патентование *


Как сообщают Ведомости, совсем недавно американская компания Fellowship Filtering Technologies подала заявление в суд, обвиняя «Яндекс» в использовании ранее зарегистрированного патента технологии анализа поведения пользователей.
Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Комментарии 8

Декларативная фильтрация данных на фронте. JS/TS

Время на прочтение 7 мин
Количество просмотров 7.3K
Open source *JavaScript *Программирование *TypeScript *


Часто ли вам приходилось писать обработчики фильтрации для ваших данных? Это могут быть массивы для отрисовки таблиц, карточек, списков — чего угодно.


Когда фильтрация статическая, то тут все просто. Стандартных функций map, filter и reduce вполне достаточно. Но что делать, если данные имеют сложную структуру или вложенность, да еще и правил для фильтра может быть достаточно много. Правила могут повторяться, данные изменяться, и чем больше контролов фильтра будет появляться, тем сложнее и неустойчивее будет код обработчика.


Как же решить проблему возрастающей сложности?

Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 12