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

Комментарии 10

Выгляит очень любопытно =)
Я зашел на github и открыл первый попавшийся файл:

public static function removeViewedForField($table_id, $field_name, $Config) { $Config->getSql()->exec('delete from ' . static::table_viewed . ' where table_id=' . $table_id . ' AND field_name=\'' . $field_name . '\''); }

Этот код вызывается с параментрами напрямую из JSON input, как я понимаю... и если вместо $field_name там будет что-то с одинарной кавычкой, то всё - вся база данных, целиком, принадлежит атакующему через SQL Injection.

Мне кажется, так не стоит делать :) вы пробовали запускать Nessus или burp?

В это место данные приходят из под доступа админа в случае удаления поля из бд. Ему не надо морочится с атакой, у него и так полный доступ.

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

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

Крутая задумка. Как я понимаю это аналог directus / stapi. Но для меня ярким жирным стоп фактором является какой-то собственный язык разработки. Извините но нет. Зовите когда добавите поддержку js/python да хотя бы lua/lisp

есть n8n, там хотя бы на js пишется. Я так понимаю это одно и тоже?

n8n другое, это все же как directus и stapi, но все равно выглядит хорошо

Разработана для непрограммистов, т.е. для тех, кто не является профессиональным разработчиком, но имеет потребность в разработке собственной автоматизации

=: listSum(list: $list) + #fixed_costs

list: selectList(table: 'orders'; field: 'cost'; where: 'number' = $listNumbers)

listNumbers: selectList(table: 'orders'; field: 'number'; where: 'date' >= #first_day_months; where: 'orderStatus' = #final_status)

Интересно, а почему Вы выбрали синтаксис со спецсимволами, а не обычный SQL-подобный язык, как в том же lsFusion ?

Ведь SQL изначально и создавался, для обычных пользователей, а все эти символы обычному человеку непривычны.

Кроме того, интересны пояснения, что именно делают эти вычисления. А то вот я читаю, пример выше и не могу понять. Зачем делать двойной selectList, если там одна таблица, и сразу можно фильтрова ? Для примера, вот как бы это выглядело на lsFusion :

costSum 'Сумма заказов от даты по статусу' (DATE from, Status s) = 
  GROUP SUM cost(Order o) IF date(o) >= from AND status(o) = s;

Возможно, это субъективно, но вариант со словами, а не символами выглядит проще.

Кроме того, интересно - а в какой запрос скомпилируется описанное выше вычисление ?

Практика показала, что со спецсимволами понятнее для той аудитории, для которой сделан проект. Подход: "все подписано".

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации