ModSecurity 2: Функции нормализации
Одно из того, что мне не нравилось в ModSecurity 1.x, это то, что его возможности противодействия обходу защиты были неявны. Входной поток всегда подвергался серии преобразований и всегда в одном порядке. С одной стороны это было удобно, так как вам не надо было заботиться об этом. Но такой подход - неявная нормализация - не надежен. (Не удивляйтесь). Во-первых, случаются ситуации, когда вам необходимо сделать некоторые преобразования (иногда специфичные) до того как вы увидите данные. Во-вторых, когда важен контекст, в котором используются входные данные. Такой подход не всегда подходит для выполнения специфичных преобразований - вы можете даже помочь злоумышленникам избежать обнаружения.
Вот почему, когда разрабатывал архитектуру ModSecurity 2.x, я пришел к гибкому решению, которое позволяет настраивать функции нормализации для каждой ситуации отдельно. Однако за новые возможности пришлось пожертвовать простотой - ModSecurity 2.x стал немного сложнее. Но хватит об этом, давайте обсудим улучшения.
В документации к ModSecurity 2.x описано 19 функций нормализации. Вот они:
- lowercase
- replaceNulls
- removeNulls
- compressWhitespace
- removeWhitespace
- replaceComments
- urlDecode
- urlEncode
- urlDecodeUni
- base64Encode
- base64Decode
- md5
- sha1
- hexDecode
- hexEncode
- htmlEntityDecode
- escapeSeqDecode
- normalisePath
- normalisePathWin
Имена большинства из них описывают себя сами. (Для ознакомления с другими обратитесь к документации). По умолчанию ModSecurity 2.x для входящего потока выполняет функции lowercase, replaceNulls и compressWhitespace. Если вам требуются другие действия, то вы можете их настроить, используя новое действие "t". Как и раньше, для задания списка действий по умолчанию для всех правил, вы можете использовать SecDefaultAction, например:
SecDefaultAction log,auditlog,deny,status:403,phase:2,
t:lowercase,t:replaceNulls,t:compressWhitespace
t:lowercase,t:replaceNulls,t:compressWhitespace
Этот пример взят из стандартной конфигурации. Также вы можете устанавливать действия для каждого правила отдельно, либо задавая их полностью, либо добавляя или удаляя их из стандартной конфигурации. Вот пример, где удалено действие compressWhitespace и добавлено replaceComments:
SecRule ARGS keyword t:-compressWhitespace,t:replaceComments
Для полного удаления всех нормализирующих функций просто добавьте специальное слово: none.
SecRule ARGS keyword t:none,t:normalisePathWin
А если встроенных функций нормализации вам не хватает, тогда в этом случае вы можете использовать новый API, который позволяет добавлять новые функции нормализации без изменения исходного кода. (За примерами обращайтесь к дистрибутиву.)
______________
xuxuxaxa.ru
Комментарий от skif1993 — Август 28, 2008 @ 4:01 pm
Комментарий от партнерская программа — Сентябрь 17, 2008 @ 2:37 pm
Комментарий от Альби — Сентябрь 30, 2008 @ 12:23 pm
Комментарий от Татьяна — Октябрь 16, 2008 @ 4:11 pm
Комментарий от Андрей — Октябрь 16, 2008 @ 4:12 pm
vot i u menya tokoi zhe vopros
Комментарий от Иван — Октябрь 16, 2008 @ 4:13 pm
Комментарий от Daemonz — Ноябрь 8, 2008 @ 12:44 pm
Комментарий от Механик Года — Ноябрь 29, 2008 @ 8:27 pm
Комментарий от Араб — Ноябрь 30, 2008 @ 9:24 pm
Комментарий от mauricio andré — Декабрь 22, 2008 @ 1:23 am
Комментарий от сашка — Март 28, 2009 @ 6:33 pm
Комментарий от Елизавета — Апрель 17, 2009 @ 12:07 pm