Ответ 1
Флаги описаны в на другой странице документации.
FILTER_FLAG_STRIP_LOW
разделяет байты на входе, которые имеют числовое значение < 32, наиболее заметно null bytes и другие управляющие символы, такие как колокол ASCII. Это хорошая идея, если вы намерены передать вход в другое приложение, которое использует строки с нулевым завершением. В общем случае символы с кодовым кодеком Unicode ниже 32 не должны встречаться во вводе пользователя, за исключением символов новой строки 10 и 13.
FILTER_FLAG_STRIP_HIGH
строит байты на входе с числовым значением > 127. Почти в каждой кодировке эти байты представляют не-ASCII-символы, такие как ä
, ¿
, 堆
и т.д. Передача этого флага может быть полосой для , которая может стать уязвимостью . Однако символы, отличные от ASCII, следует ожидать практически во всех пользовательских вводах.
Подводя итог:
filter_var("\0aä\x80", FILTER_SANITIZE_STRING) == "\0aä\x80"
filter_var("\0aä\x80", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW) == "aä\x80"
filter_var("\0aä\x80", FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH) == "\0a"
filter_var("\0aä\x80", FILTER_SANITIZE_STRING,
FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH) == "a"