В фреймворке CodeIgniter существует функция, которая автоматически запускается для каждого запроса, который, между прочим, фильтрует ключи массива GET/POST/COOKIE и убивает приложение, если он встречает символы, которые он считает небезопасными.
Чтобы злоумышленники не пытались использовать ключи, мы убеждаемся, что ключи называются только с буквенно-цифровым текстом и несколькими другими элементами.
Что-то вроде:
// foreach GET/POST/COOKIE keys as $str...
if ( ! preg_match("/^[a-z0-9:_\/-]+$/i", $str))
{
exit('Disallowed Key Characters.');
}
Например, это будет срабатывать, если вы случайно разместите что-то вроде <input name="TE$T">
или получите строку запроса, например ?name|first=1
.
Я вижу, что это хороший способ принудительно использовать имена ключей здравого смысла или ловить ошибки при разработке приложения, но я не понимаю: как злоумышленник может "использовать ключи" в $_POST
данных, например? Тем более, что (я бы предположил) входные значения так же доступны, что это фактически предотвращает?