Ao usar `qs.stringify` com a opção `allowEmptyArrays` definida como `true`, o software não codifica as chaves de arrays vazios. Isso ocorre porque o ramo `allowEmptyArrays` em `lib/stringify.js` retorna a chave prematuramente, ignorando as funções `encoder` e `formatter`. Se uma chave fornecida pelo usuário contiver caracteres especiais como `&` (ou um delimitador personalizado), `=` ou `#`, esses caracteres são interpretados como sintaxe de query string em vez de dados. Isso permite que um invasor injete parâmetros adicionais na query string serializada ou a encerre prematuramente usando o caractere `#`, que transforma o restante da URL em um fragmento. Este problema afeta especificamente chaves cujos valores são arrays vazios e não ocorre quando `encode` é definido como `false` ou `encodeValuesOnly` como `true`.