Que bom que gostou, mas não, não há nenhuma brecha de segurança, você está errado e vou explicar o porque:
O sanitizer eu sempre uso em todos meu plugins, usando especificamente as funções disponibilizadas pelo próprio Wordpress para isso, inclusive o wordpress barra o seu plugin, se você tem dados não sanitizados corretamente.
O Sanitizer é usado para limpar dados que serão processados, exibidos ou persistidos, seja no banco de dados ou em outro local, ou mesmo sem persistir, exibindo ele para o usário seja em algum html, pdf, xml, json ou qualquer outro recurso. Ele remove ou transforma dados perigosos para torná-los seguros para uso, evita qualquer tipo de injection, seja SQL injection, Stored XSS etc... Mas veja que onde eu usei sem, Em nenhum momento processei o dado ou perssisti ele, ou mesmo repassei ele pra frente, só validei se ele é igual á algo, e então o descartei. Não há nenhuma brecha de segurança nisso, te dou um prêmio se conseguir aplicar alguma injection nesse dado, e usar um sanetizer nesse caso seria irrelevante. Eu poderia colocar apenas por hábito, mas em nenhum momento por segurança nesse caso, como você disse.
É bem comum que Programador sem muita experiência se confudam o que precisa e não precisa ser sanetizado, por esse motivo o wordpress recomenda sanetizar tudo por hábito, e isso evita que onde realmente precise o programador não esqueça.
Só pelo fato de você achar que existe uma brecha de segurança nesse trecho do código, diz muito sobre o seu conhecimento de programação ou segurança. Ou mesmo ter cogitado que eu uso IA para codar rs, se você usa, que bom!
Segue a baixo um trecho sobre isso:
Quando você NÃO precisa sanitizar
Se o valor vindo de $_GET
- Não é salvo no banco de dados
- Não é exibido (echo/HTML/output)
- Não é usado para executar lógica (como carregar arquivos, fazer queries, chamar funções dinâmicas, etc.)
- É apenas comparado com uma lista fixa de strings internas (in_array) ou comparado com uma condição
Então NÃO existe risco real de segurança, e sanitizar passa a ser apenas boa prática, não uma necessidade.
A função só compara:
if ( current_page === page ) {
return true;
}
Ela não imprime o valor, não salva, não usa para carregar nenhum recurso
Então usar ou não sanitização nesse caso não muda nada para segurança.
O motivo de muitos desenvolvedores sanitizarem nesse caso específico seria mais por hábito, e não por questões de segurança como você disse
E é muito curioso você falar isso, pois em um código seu onde você sim está usando o $_GET para exibir ou processar os dados:
https://github.com/gmasson/carne-de-pagamento/blob/master/capa.php
Você está usando addslashes achando que está sanetizando quando a própria deocumentação do PHP diz exatamente ao contrário, abaixo o trecho exato tirado da documentaçao do PHP:
"O método addslashes() às vezes é usado incorretamente para tentar impedir a injeção de SQL . Em vez disso, funções de escape específicas do banco de dados e/ou instruções preparadas devem ser usadas." (referencia: https://www.php.net/manual/en/function.addslashes.php)
Mas eu entendo, pois pelo modo que foi escrito o seu código, me parece que você é iniciante, de qualquer modo, se você quer fuçar mais no meu código, pode fuçar a vontade, e se encontrar algum bug ou problema pode fazer uma PR, provavelmente tenha, mas felizmente não era o que você disse que era.