Модель безопасности Regex

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

PSL-файл с описанием модели безопасности Regex находится в KasperskyOS SDK по пути:

toolchain/include/nk/regex.psl

Объект модели безопасности Regex

В файле regex.psl содержится декларация, которая создает объект модели безопасности Regex с именем re. Соответственно, включение файла regex.psl в описание политики безопасности решения обеспечивает создание объекта модели безопасности Regex по умолчанию.

Объект модели безопасности Regex не имеет параметров.

Объект модели безопасности Regex может быть покрыт аудитом безопасности. При этом нужно задать условия выполнения аудита, специфичные для модели безопасности Regex. Для этого в описании конфигурации аудита нужно использовать следующие конструкции:

Необходимость создавать дополнительные объекты модели безопасности Regex возникает в следующих случаях:

Методы модели безопасности Regex

Модель безопасности Regex содержит следующие выражения:

Синтаксис регулярных выражений модели безопасности Regex

Регулярное выражение для метода match модели безопасности Regex можно записать двумя способами: внутри многострочного блока regex или как текстовый литерал.

При записи регулярного выражения как текстового литерала все вхождения обратного слеша необходимо удвоить.

Например, два регулярных выражения идентичны:

// Регулярное выражение внутри многострочного блока regex

{ pattern:

```regex

Hello\ world\!

```

, text: "Hello world!"

}

// Регулярное выражение как текстовый литерал (обратный слеш удвоен)

{ pattern: "Hello\\ world\\!"

, text: "Hello world!"

}

Регулярные выражения для метода select модели безопасности Regex записываются как текстовые литералы с удвоением обратного слеша.

Регулярное выражение задается в виде строки-шаблона и может содержать:

Регулярные выражения чувствительны к регистру.

Литералы и метасимволы в регулярных выражениях

Пробельные символы в регулярных выражениях

Определение символа по его восьмеричному или шестнадцатеричному коду в регулярных выражениях

Наборы символов в регулярных выражениях

Набор символов задается внутри квадратных скобок [] перечислением или диапазоном символов. Набор символов указывает интерпретатору регулярных выражений, что на этом месте в последовательности символов может стоять только один из перечисленных в наборе или диапазоне символов. Набор символов не может быть пустым.

Набор символов BracketSpec может быть перечислен явно или определен как диапазон символов. Чтобы определить диапазон символов, первый и последний символ в наборе разделяют дефисом.

ASCII-код символа верхней границы диапазона должен быть больше ASCII-кода символа нижней границы диапазона.

Например, регулярные выражения типа [5-2] или [z-a] недопустимы.

Знак дефиса (минуса) - рассматривается как специальный символ только внутри набора символов. Вне набора символов дефис является литералом, поэтому дефису не обязан предшествовать метасимвол \. Для использования дефиса как литерала внутри набора символов необходимо указывать его первым или последним в наборе.

Примеры:

Регулярным выражениям [-az] и [az-] соответствуют символы a, z и -.

Регулярному выражению [a-z] соответствует любая из 26 латинских букв от a до z в нижнем регистре.

Регулярному выражению [-a-z] соответствует любая из 26 латинских букв от a до z в нижнем регистре и -.

Циркумфлекс (символ вставки) ^ рассматривается как специальный символ только внутри набора символов, когда он расположен сразу после открывающей квадратной скобки. Вне набора символов циркумфлекс является литералом, поэтому циркумфлексу не обязан предшествовать метасимвол \. Для использования циркумфлекса как литерала внутри набора символов необходимо указывать его не первым в наборе.

Примеры:

Регулярному выражению [0^9] соответствуют символы 0, 9 и ^.

Регулярному выражению [^09] соответствует любой символ, кроме 0 и 9.

Внутри набора символов метасимволы *.&|!?+ теряют свое специальное значение и интерпретируются как литералы, поэтому предварять их метасимволом \ не обязательно. Обратный слеш \ сохраняет свое специальное значение внутри набора символов.

Например, регулярные выражения [a.] и [a\.] идентичны, и им соответствуют символ a и точка как литерал.

Группы символов и операторы в регулярных выражениях

Группа символов выделяет из регулярного выражения его часть (подвыражение) с помощью круглых скобок (). Обычно группы используются для выделения подвыражений в качестве операндов. Группы могут быть вложены друг в друга.

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

В синтаксисе определены следующие операторы (перечислены в порядке убывания приоритета):

В начало