Назад: Регулярные выражения Концепция безопасных ссылок Все внутренние ссылки (ссылки между внутренними страницами) в системе ERP-Платформа, являются "безопасными". Что понимается под "безопасностью"? Понимается то, что информация передаваемая методом GET (в строке браузера формата &id=5) не будет покидать пределов сервера. Т.е. вариант что-то дописать в параметрах вручную, например, встроить какую-то SQL иньекцию, полностью исключается. Каким же образом можно исключить данный вариант. Вот есть ссылка с одной страницы системы на другую, к примеру страница карточки контрагента, в ней ссылка на страницу редактирования данных контрагента. Страница редактирования, каким-то образом должна узнать, какого контрагента редактируются данные. Т.е. в параметрах ссылки должен быть передан идентификатор контрагента, т.е. site.ru/upd?id_kontragent=50. Допустим какой-то человек, который не имеет доступа к системе редактирования, введет данную ссылку в браузере? Он получит доступ к редактированию данного контрагента, а если он введет в строке браузера site.ru/upd?id_kontragent=54, то и того подавно, вообще к другому. Конечно права доступа могут проверяться на уровне страницы редактирования и ему ничего вообще не отобразиться, но все же... ибо последствия могут быть еще серьезнее. Например, если не стоит проверка типа данных и приведения данного параметра к числовому типу, а так же если используется доступ к бд из под рутового юрзера, то написав site.ru/upd?id_kontragent=54;drop database; можно и потерю базы данных схлопотать, ибо выполнится "select ... from... where k.id=54;drop datbase". Это конечно совсем уж вариант для "чайников", но и такое иногда имеет место быть. Поэтому в системе ERP-Платформы, используются "Безопасные ссылки". Все элементы передаваемые в ссылке пишутся в специальную (быструю) базу данных и закрываются уникальной хеш суммой, состоящей из параметров ссылки и неизвестного ключа, на основе кодового слова и значения уникальной сессии пользователя. Т.е. хеш одной и той же ссылки при другой авторизации пользователя уже будет разным. Вот в ссылке как раз передается хеш сумма, например site.ru/upd?h=295b2e8486eda31f993e24d80ea57073de37280fbe145663f596e983d7e4e5c5. Страница получатель, получая GET['h'] после проверки на количество символов и недопустимых символов, сделает запрос в базу данных ссылок по данному хешу, и получит параметры переданные с другой страницы. Т.е. браузеру пользователя, параметры с идентификатором контрагента даже не будут передаваться и не покинут пределов сервера. Браузеру пользователя передастся только уникальных ключ к данным, с которым сделать ничего нельзя. Если что-то допишешь, получишь нулевой результат. Создание ссылки Управление Данные ссылки Параметры ссылки Показ ссылок в системе редактирования В живую, на веб странице, данная ссылка будет выглядеть так. А вот пример использования "Добавить в столбец". Вот результат вывода данной конфигурации на веб странице |