# Класс Spoofchecker

(PHP 5 >= 5.4.0, PHP 7, PHP 8, PECL intl >= 2.0.0)

## Введение

Этот класс существует, потому что Unicode содержит большое количество символов и включает в себя разные системы письма со всего мира и некорректное использование символов делает программы и системы уязвимыми к хакерским атакам на основе сходства символов.

Методы, которые предоставляет класс, умеют проверять строку на предмет попыток обмануть пользователя (`spoof detection`), например, вставить в слово "pаypаl" кириллический символ 'а'.

## Обзор класса

class Spoofchecker {
/* Константы */
public const int SINGLE_SCRIPT_CONFUSABLE;
public const int MIXED_SCRIPT_CONFUSABLE;
public const int WHOLE_SCRIPT_CONFUSABLE;
public const int ANY_CASE;
public const int SINGLE_SCRIPT;
public const int INVISIBLE;
public const int CHAR_LIMIT;
public const int ASCII;
public const int HIGHLY_RESTRICTIVE;
public const int MODERATELY_RESTRICTIVE;
public const int MINIMALLY_RESTRICTIVE;
public const int UNRESTRICTIVE;
public const int SINGLE_SCRIPT_RESTRICTIVE;
public const int MIXED_NUMBERS;
public const int HIDDEN_OVERLAY;
public const int IGNORE_SPACE;
public const int CASE_INSENSITIVE;
public const int ADD_CASE_MAPPINGS;
public const int SIMPLE_CASE_INSENSITIVE;
/* Методы */
public function __construct()
public function areConfusable(string `$string1`, string `$string2`, int `&$errorCode` = `null`): bool
public function isSuspicious(string `$string`, int `&$errorCode` = `null`): bool
public function setAllowedChars(string `$pattern`, int `$patternOptions` = 0): void
public function setAllowedLocales(string `$locales`): void
public function setChecks(int `$checks`): void
public function setRestrictionLevel(int `$level`): void
}

## Предопределённые константы

`Spoofchecker::SINGLE_SCRIPT_CONFUSABLE` int

`Spoofchecker::MIXED_SCRIPT_CONFUSABLE` int

`Spoofchecker::WHOLE_SCRIPT_CONFUSABLE` int

`Spoofchecker::ANY_CASE` int

`Spoofchecker::SINGLE_SCRIPT` int

`Spoofchecker::INVISIBLE` int

`Spoofchecker::CHAR_LIMIT` int

`Spoofchecker::ASCII` int

`Spoofchecker::HIGHLY_RESTRICTIVE` int

`Spoofchecker::MODERATELY_RESTRICTIVE` int

`Spoofchecker::MINIMALLY_RESTRICTIVE` int

`Spoofchecker::UNRESTRICTIVE` int

`Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE` int

`Spoofchecker::MIXED_NUMBERS` int

`Spoofchecker::HIDDEN_OVERLAY` int

`Spoofchecker::IGNORE_SPACE` int

`Spoofchecker::CASE_INSENSITIVE` int
  Включает сопоставление без учёта регистра
`Spoofchecker::ADD_CASE_MAPPINGS` int

  Добавляет все сопоставления регистра для каждого элемента в наборе

`Spoofchecker::SIMPLE_CASE_INSENSITIVE` int
  Включает сопоставление без учёта регистра

## Список изменений

Версия | Описание
--- | ---
8.4.0 | Добавлены константы `Spoofchecker::IGNORE_SPACE`, `Spoofchecker::CASE_INSENSITIVE`, `Spoofchecker::ADD_CASE_MAPPINGS`, `Spoofchecker::SIMPLE_CASE_INSENSITIVE`.
8.4.0 | Константы класса стали типизированными.
7.3.0 | Добавили для метода Spoofchecker::setRestrictionLevel() следующие константы класса: `Spoofchecker::ASCII`, `Spoofchecker::HIGHLY_RESTRICTIVE`, `Spoofchecker::MODERATELY_RESTRICTIVE`, `Spoofchecker::MINIMALLY_RESTRICTIVE`, `Spoofchecker::UNRESTRICTIVE`, `Spoofchecker::SINGLE_SCRIPT_RESTRICTIVE`.

## Содержание

- Spoofchecker::areConfusable — Проверить, являются ли строки подозрительными
- Spoofchecker::__construct — Конструктор класса
- Spoofchecker::isSuspicious — Проверяет, содержит ли текст подозрительные символы
- Spoofchecker::setAllowedChars — Задаёт набор символов, допустимых при выполнении проверок
- Spoofchecker::setAllowedLocales — Локаль для использования в проверках
- Spoofchecker::setChecks — Установить набор проверок
- Spoofchecker::setRestrictionLevel — Устанавливает уровень ограничения

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open