Класс FormProtector
Защищает от подмены данных формы. Обеспечивает:
- Сохранение действия формы (URL).
- Отказ от добавления неизвестных/дополнительных полей в форму.
- Отказ от удаления существующих полей из формы.
- Сохранение значений скрытых полей ввода.
Краткое описание свойств
- $debugMessage protected
string|nullСообщение об ошибке, содержащее подробности о неудачной валидации.
- $fields protected
arrayСписок полей.
- $unlockedFields protected
array<string>Разблокированные поля.
Краткое описание методов
-
__construct() public
Конструктор.
-
__debugInfo() public
Возвращает отладочную информацию.
-
addField() public
Определяет, какие поля формы следует использовать для хеширования.
-
buildTokenData() public
Генерирует данные токена.
-
debugCheckFields() protected
Итерирует массив данных для проверки по ожидаемым значениям.
-
debugExpectedFields() protected
Генерирует сообщение об ошибке для ожидаемых полей.
-
debugTokenNotMatching() protected
Создаёт сообщение для пользователя, объясняющее, почему токен безопасности не совпадает.
-
extractFields() protected
Возвращает список полей для вычисления хеша.
-
extractHashParts() protected
Возвращает части хеша для генерации токена.
-
extractToken() protected
Извлекает токен из данных.
-
generateHash() protected
Генерирует хеш валидации.
-
getError() public
Получает сообщение об ошибке валидации.
-
getFieldNameArray() protected
Разбирает имя поля, создавая значение с разделителями точек для использования в хеше полей. Если имя поля имеет вид "Model[поле]" или "Model.поле", возвращается массив частей имени поля, например ['Model', 'поле'].
-
matchExistingFields() protected
Генерирует массив сообщений для существующих полей в данных POST, соответствующие поля в dataFields в $expectedFields будут удалены.
-
sortedUnlockedFields() protected
Получает отсортированный список разблокированных полей.
-
unlockField() public
Добавляет поле в список текущих разблокированных полей.
-
validate() public
Проверяет данные формы, отправленные пользователем.
Подробное описание методов
__construct() public
__construct(array<string, mixed> $data = [])
Конструктор.
Параметры
-
array<string, mixed>$data optional Массив данных, может содержать ключ
unlockedFieldsсо списком разблокированных полей.
__debugInfo() public
__debugInfo(): array<string, mixed>
Возвращает отладочную информацию
Возвращает
array<string, mixed>addField() public
addField(array<string>|string $field, bool $lock = true, mixed $value = null): $this
Определяет, какие поля формы следует использовать для хэша.
Параметры
-
array<string>|string$field Ссылка на поле, которое необходимо защитить. Может быть строкой с разделителями точек для указания вложенности или массивом частей имени поля.
-
bool$lock optional Следует ли включать это поле в валидацию или исключать его как часть unlockedFields. Значение по умолчанию
true.-
mixed$value optional Значение поля, если значение не должно быть изменено.
Возвращает
$thisbuildTokenData() public
buildTokenData(string $url = '', string $sessionId = ''): array<string, string>
Генерирует данные токена.
Параметры
-
string$url optional URL формы.
-
string$sessionId optional Идентификатор сессии.
Возвращает
array<string, string>debugCheckFields() protected
debugCheckFields(array $dataFields, array $expectedFields = [], string $intKeyMessage = '', string $stringKeyMessage = '', string $missingMessage = ''): array<string>
Итерирует массив данных для проверки на соответствие ожидаемым значениям
Параметры
-
array$dataFields Массив полей, содержащий поля данных POST
-
array$expectedFields optional Массив полей, содержащий ожидаемые поля, которые должны быть в POST
-
string$intKeyMessage optional Строка сообщения, если неожиданные данные найдены в полях данных с индексом int (не защищены)
-
string$stringKeyMessage optional Строка сообщения, если подмена найдена в полях данных с индексом string (защищены).
-
string$missingMessage optional Строка сообщения, если поле отсутствует
Возвращает
array<string>debugExpectedFields() protected
debugExpectedFields(array $expectedFields = [], string $missingMessage = ''): string|null
Генерирует отладочное сообщение для ожидаемых полей
Параметры
-
array$expectedFields optional Ожидаемые поля
-
string$missingMessage optional Шаблон сообщения
Возвращает
string|nulldebugTokenNotMatching() protected
debugTokenNotMatching(array $formData, array $hashParts): string
Создает сообщение для пользователей, чтобы объяснить, почему токен безопасности не совпадает
Параметры
-
array$formData Данные.
-
array$hashParts Элементы, используемые для генерации хэша токена
Возвращает
stringextractFields() protected
extractFields(array $formData): array
Возвращает список полей для вычисления хэша
Параметры
-
array$formData Массив данных
Возвращает
arrayextractHashParts() protected
extractHashParts(array<string, array> $formData): array<string, array>
Возвращает части хэша для генерации токена
Параметры
-
array<string, array>$formData Данные формы.
Возвращает
array<string, array>extractToken() protected
extractToken(mixed $formData): string|null
Извлекает токен из данных.
Параметры
-
mixed$formData Данные для валидации.
Возвращает
string|nullgenerateHash() protected
generateHash(array $fields, array<string> $unlockedFields, string $url, string $sessionId): string
Генерирует хэш валидации.
Параметры
-
array$fields Список полей.
-
array<string>$unlockedFields Разблокированные поля.
-
string$url URL формы.
-
string$sessionId Идентификатор сессии.
Возвращает
stringgetError() public
getError(): string|null
Получает сообщение об ошибке валидации.
Возвращает
string|nullgetFieldNameArray() protected
getFieldNameArray(string $name): array<string>
Разбирает имя поля для создания значения имени с разделителями точек для использования в хэше поля. Если имя поля имеет вид Model[field] или Model.field, возвращается массив частей имени поля, например ['Model', 'field'].
Параметры
-
string$name Атрибут имени входных данных формы.
Возвращает
array<string>matchExistingFields() protected
matchExistingFields(array $dataFields, array $expectedFields, string $intKeyMessage, string $stringKeyMessage): array<string>
Генерирует массив сообщений для существующих полей в данных POST, совпадающие dataFields в $expectedFields будут очищены
Параметры
-
array$dataFields Массив полей, содержащий поля данных POST
-
array$expectedFields Массив полей, содержащий ожидаемые поля, которые должны быть в POST
-
string$intKeyMessage Строка сообщения, если неожиданные данные найдены в полях данных с индексом int (не защищены)
-
string$stringKeyMessage Строка сообщения, если подмена найдена в полях данных с индексом string (защищены)
Возвращает
array<string>sortedUnlockedFields() protected
sortedUnlockedFields(array $formData): array<string>
Получает отсортированную строку разблокированных полей
Параметры
-
array$formData Массив данных
Возвращает
array<string>unlockField() public
unlockField(string $name): $this
Добавляет в список полей, которые в данный момент разблокированы.
Разблокированные поля не включаются в хэш поля.
Параметры
-
string$name Имя поля с разделителями точек.
Возвращает
$thisvalidate() public
validate(mixed $formData, string $url, string $sessionId): bool
Валидирует отправленные данные формы.
Параметры
-
mixed$formData Данные формы.
-
string$url URL, на который был отправлен POST запрос.
-
string$sessionId Идентификатор сессии для генерации хэша.
Возвращает
boolПодробное описание свойств
$debugMessage защищенное
Сообщение об ошибке, содержащее подробности о неудачной проверке.
Тип
string|null$fields защищенное
Список полей.
Тип
array$unlockedFields защищенное
Разблокированные поля.
Тип
array<string>
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.3/class-Cake.Form.FormProtector.html