Сообщения

Сообщения за 2020

Postman: nginx secure link

Изображение
В предыдущей статье рассматривался вариант защищённых ссылок, которые предоставляет модуль ngx_http_secure_link_module веб-сервера nginx. В этой статье рассмотрим, как тестировать этот вид ссылок в программе Postman , - как автоматически вычислять md5 хэш от переменных и постоянных параметров. Динамические параметры Postman В программе Postman можно использовать переменные, которые могу выступать и частью URL, и значениями параметров запроса. Так ссылка /s/api/v1/auth/?md5= 1pzX968MiqPu_ZvYYht5Xg &expires= 1704067200 из прошлой статьи с применением переменных должна стать такого вида: /s/api/v1/auth/?md5= {{md5}} &expires= {{expires}} Переменные удобно привязывать к настройкам окружения - кнопка с глазом - "Environment quick look" . Настройки окружения удобно делать для нескольких инсталляций сайтов (боевой, тестовый, локальный и пр.). В программе Postman просто переключать окружение и отправлять запрос на нужный домен. При этом все прочие параметры запроса остаются...

Закрытое API: nginx secure link

Изображение
Допустим, есть API для сугубо внутреннего пользования. Например, взаимодействие мобильных приложений и сайта. API нигде не офишируется, нет публичной документации и вообще никаких упоминаний где-либо вне организации. Но само API открытое. Нет никакой 0Auth авторизации, или JWT, или ещё чего-то. В какой-то момент API начинает работать не только на внутренние цели, но и на пользу нежелательным сторонним пользователям. Начинают напрямую пользоваться API методами, тем самым создавая лишнюю нагрузку на серверах, утечку данных и прочие негативные последствия. Как открытое API превратить в закрытое? При этом не поломать старые валидные клиенты (хотя бы на переходный период). И в перспективе пресечь любые несанкционированные запросы через API. Тут приведу один вариант, полностью средствами веб-сервера nginx. Если кто-то знает ещё удачные варианты - пишите в комментариях. Модуль ngx_http_secure_link_module На странице официальной документации отлично описана польза, которую даёт применение это...

Битрикс: архитектурная ошибка SQL

Изображение
В схеме базы данных битрикса есть неочевидный баг. На первый взгляд, всё выглядит нормально, а по факту - не работает. Дело вот в чём. Есть таблица пользователей - b_user . Вполне логично ожидать от такой таблицы, что поле логина будет уникальным. Чтобы база данных не давала физически сохранить две учётные записи с одинаковым логином. Но в битриксе это не так! Уникальный составной ключ Яркий пример проблемы, которую привносит разработчик, выполняя работу архитектора баз данных. SQL-запросом SHOW CREATE TABLE b_user; Можно просмотреть схему таблицы, где видно, что есть некий уникальный составной ключ ix_login . На этот ключ возлагались напрасные надежды следить за уникальностью логинов. Вот как выглядит схема этой таблицы (из вывода запроса убрал ненужные в данном обзоре столбцы): CREATE TABLE `b_user` ( `ID` int(18) NOT NULL AUTO_INCREMENT, `TIMESTAMP_X` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `LOGIN` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `PAS...

jQuery UI: Сборка из исходников

Изображение
 Введение Недавно понадобилось поставить только виджет datepicker из набора jQuery UI . Ранее для этого требовалось зайти на официальный сайт, выбрать галочками нужное и скачать итоговый пакет. Сейчас же сайт отдаёт ошибку 502: Я даже подумал, что проект забросили и больше не поддерживают библиотеку. Но выход нашёлся. Если внимательно посмотреть сайт, то можно найти ссылку на репозиторий github . Там есть недавние коммиты - значит проект жив. Сборка из исходников Клонируем себе проект: git clone https://github.com/jquery/jquery-ui.git Далее перерыл сайт для разработчиков, искал в интернете, на их же github - как можно собрать из исходников именно то, что нужно (как это делается на сайте в Download Builder ), а не весь гигантский набор виджетов и эффектов jQuery UI. Нигде ничего не нашёл, кроме указания верного пути в Stack Owerflow . Переходим в каталог исходников и устанавливаем зависимости для сборки: cd jquery-ui/ npm install sudo apt install node-grunt-cli Меняем файл сбор...

Битрикс: своя геолокация

Не так давно (с 17 версии) в битриксе появилась штатная возможность управления геолокацией. Это когда нужно определить географическое положение клиента (по его IP адресу). Например, чтобы переключить интерфейс сайта на нужный язык или показать цены товаров для нужного региона. Так вот битрикс дал не только возможность пользоваться тем что есть, но и возможность прикрутить к этому функционалу собственные обработчики. Кому и зачем могут понадобиться собственные обработчики геолокации? Да всё просто - всем, кому вообще нужна геолокация. Дело в том, что провайдеры геоданных, как показывает практика, долго не живут. Одни закрываются, другие появляются. И так постоянно. Конечно, битрикс не сможет оперативно предлагать новые и новые сервисы в своей поставке. Хотя сейчас из коробки доступны самые популярные сервисы геоданных на данный момент. Есть даже заметка в официальной документации на эту тему. Но, конечно, гораздо подробнее тема раскрывается в неофициальных источниках . Принцип работы Т...