Spec-Zone.ru › CakePHP 4.2

Класс FormProtector

Защищает от подмены данных формы. Обеспечивает:

  • Сохранение действия формы (URL).
  • Отказ от добавления неизвестных/дополнительных полей в форму.
  • Отказ от удаления существующих полей из формы.
  • Сохранение значений скрытых полей ввода.
Пространство имён: Cake\Form

Краткое описание свойств

  • $debugMessage protected
    string|null

    Сообщение об ошибке, содержащее подробности о неудачной валидации.

  • $fields protected
    array

    Список полей.

  • $unlockedFields protected
    array

    Разблокированные поля.

Краткое описание методов

  • __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

    Проверяет данные формы, отправленные пользователем.

END_OF_DOCUMENT_MARKER

Подробное описание методов

__construct() public

__construct(array $data = [])

Конструктор.

Параметры

array $data optional

Массив данных, может содержать ключ unlockedFields со списком разблокированных полей.

__debugInfo() public

__debugInfo(): array

Возвращает отладочную информацию

Возвращает

array

addField() public

addField(string|array $field, bool $lock = true, mixed $value = null): $this

Определяет, какие поля формы следует использовать для хэша.

Параметры

string|array $field

Ссылка на поле, которое необходимо защитить. Может быть строкой с разделителями точек для указания вложенности или массивом частей имени поля.

bool $lock optional

Следует ли включать это поле в валидацию или исключать его как часть unlockedFields. Значение по умолчанию true.

mixed $value optional

Значение поля, если значение не должно быть изменено.

Возвращает

$this

buildTokenData() public

buildTokenData(string $url = '', string $sessionId = ''): array

Генерирует данные токена.

Параметры

string $url optional

URL формы.

string $sessionId optional

Идентификатор сессии.

Возвращает

array

debugCheckFields() protected

debugCheckFields(array $dataFields, array $expectedFields = [], string $intKeyMessage = '', string $stringKeyMessage = '', string $missingMessage = ''): string[]

Перебирает массив данных для проверки на соответствие ожидаемым значениям

Параметры

array $dataFields

Массив полей, содержащий поля данных POST

array $expectedFields optional

Массив полей, содержащий ожидаемые поля, которые должны быть в POST

string $intKeyMessage optional

Строка сообщения, если неожиданные данные найдены в полях данных, индексированных целым числом (не защищено)

string $stringKeyMessage optional

Строка сообщения, если найдены изменения в полях данных, индексированных строкой (защищено).

string $missingMessage optional

Строка сообщения, если поле отсутствует

Возвращает

string[]

debugExpectedFields() protected

debugExpectedFields(array $expectedFields = [], string $missingMessage = ''): string|null

Генерирует отладочное сообщение для ожидаемых полей

Параметры

array $expectedFields optional

Ожидаемые поля

string $missingMessage optional

Шаблон сообщения

Возвращает

string|null

debugTokenNotMatching() protected

debugTokenNotMatching(array $formData, array $hashParts): string

Создает сообщение для пользователей, чтобы объяснить, почему токен безопасности не совпадает

Параметры

array $formData

Данные.

array $hashParts

Элементы, используемые для генерации хэша токена

Возвращает

string

extractFields() protected

extractFields(array $formData): array

Возвращает список полей для вычисления хэша

Параметры

array $formData

Массив данных

Возвращает

array

extractHashParts() protected

extractHashParts(array $formData): array

Возвращает части хэша для генерации токена

Параметры

array $formData

Данные формы.

Возвращает

array

extractToken() protected

extractToken(mixed $formData): string|null

Извлекает токен из данных.

Параметры

mixed $formData

Данные для валидации.

Возвращает

string|null

generateHash() protected

generateHash(array $fields, array $unlockedFields, string $url, string $sessionId): string

Генерирует хэш валидации.

Параметры

array $fields

Список полей.

array $unlockedFields

Разблокированные поля.

string $url

URL формы.

string $sessionId

Идентификатор сессии.

Возвращает

string

getError() public

getError(): string|null

Получает сообщение об ошибке валидации.

Возвращает

string|null

getFieldNameArray() protected

getFieldNameArray(string $name): string[]

Разбирает имя поля для создания значения с разделителями точек для использования в хэше поля. Если имя поля имеет вид Model[field] или Model.field, возвращается массив частей имени поля, например, ['Model', 'field'].

Параметры

string $name

Атрибут name элемента формы.

Возвращает

string[]

matchExistingFields() protected

matchExistingFields(array $dataFields, array $expectedFields, string $intKeyMessage, string $stringKeyMessage): string[]

Генерирует массив сообщений для существующих полей в данных POST, совпадающие dataFields в $expectedFields будут очищены

Параметры

array $dataFields

Массив полей, содержащий поля данных POST

array $expectedFields

Массив полей, содержащий ожидаемые поля, которые должны быть в POST

string $intKeyMessage

Строка сообщения, если неожиданные данные найдены в полях данных, индексированных целым числом (не защищено)

string $stringKeyMessage

Строка сообщения, если найдены изменения в полях данных, индексированных строкой (защищено)

Возвращает

string[]

sortedUnlockedFields() protected

sortedUnlockedFields(array $formData): string[]

Получает отсортированную строку разблокированных полей

Параметры

array $formData

Массив данных

Возвращает

string[]

unlockField() public

unlockField(string $name): $this

Добавляет в список полей, которые в данный момент разблокированы.

Разблокированные поля не включаются в хэш поля.

Параметры

string $name

Имя поля с разделителями точек.

Возвращает

$this

validate() 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

© 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.2/class-Cake.Form.FormProtector.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API