FILTER_FLAG_STRIP_LOW vs FILTER_FLAG_STRIP_HIGH? - программирование
Подтвердить что ты не робот

FILTER_FLAG_STRIP_LOW vs FILTER_FLAG_STRIP_HIGH?

Вы знаете, что я говорю о функции filter_var в PHP 5.

Я посетил http://php.net/manual/en/filter.filters.sanitize.php, но у меня все еще есть вопрос:

Каковы точные различия?

Просьба привести пример, чтобы его легче было разъяснить.

4b9b3361

Ответ 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"

Ответ 2

FILTER_FLAG_STRIP_LOW

Удалить символы с ASCII значением < 32

FILTER_FLAG_STRIP_HIGH

Удалить символы с ASCII значением > 127