Санация входных данных базы данных в Clojure с помощью Korma
Я использую Korma за RESTful API, и мне приходит в голову, что я передаю пользовательские значения через мой (insert)
звонки. Есть ли в Clojure хороший способ защиты от атак SQL-инъекций? Korma генерирует SQL довольно простым способом, поэтому, если кто-то скажет мне, что их зовут маленькие Бобби Таблицы, я боюсь, что это повредит.
1 ответ
Насколько я понимаю, Korma всегда генерирует параметризованный SQL, по крайней мере, для выбора и вставки (я лично не проверял другие), поэтому с таблицами Little Baby должно быть все в порядке.
Тщательно изучите, как эти значения возвращаются из базы данных. Очистка входных данных БД никак не защищает от CSRF/XSS и т. Д. При работе с веб-взаимодействиями Clojure и DB <-> я использую правило, согласно которому все компоненты системы должны кодировать данные так, чтобы это было безопасно для следующего сервера в цепочка и логические ограничения (например, максимальный размер поиска) проверяются заранее в кольцевом промежуточном программном обеспечении.
Безопасность - это гонка вооружений "кошка-мышка", и ничто не заменит эту проверку. Идите вперед и добавьте таблицы Little Baby Tables в каждый запрос и попробуйте все комбинации кодирования и множественного кодирования, которые вы только можете придумать. Демонстрация эксплойтов иногда может быть довольно эффективным способом помочь коллегам научиться распознавать эти вещи (только не думайте об этом)