security: Implementação de filtro de sanitização e proteção contra ataques homógrafos - #4
Open
anonymous135246 wants to merge 5 commits into
Open
security: Implementação de filtro de sanitização e proteção contra ataques homógrafos#4anonymous135246 wants to merge 5 commits into
anonymous135246 wants to merge 5 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Esta PR adiciona validações de username para restringir operações a nomes ASCII alfanuméricos, com a intenção de mitigar riscos de sanitização/homógrafos em fluxos de economia do bot.
Changes:
- Adiciona utilitários
isUsernameAsciiAlnumedetectInvalidCharTypeemsrc/utils/functions.js. - Bloqueia interações (slash/context, botões e select menus) quando o username não passa na validação; adiciona a mesma validação no comando
work. - Pequenos ajustes: adiciona
categoryaos comandos no loader, altera valor do itemlog, remove.github/copilot-instructions.md.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| src/utils/functions.js | Introduz funções utilitárias para validação/detecção de caracteres inválidos em usernames. |
| src/events/interactions.js | Aplica bloqueio por username em handlers globais de interações (chat/button/select). |
| src/commands/economy/work.js | Adiciona validação de username no comando work antes do processamento. |
| src/handlers/commands.js | Deriva e injeta command.category a partir do path do arquivo; corrige for...of com const. |
| src/handlers/items.js | Ajusta o value do item log. |
| .github/copilot-instructions.md | Remove instruções internas do Copilot. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+33
to
+35
| // Security validation: block usernames that are not basic ASCII alphanumeric | ||
| const username = interaction.user && interaction.user.username ? interaction.user.username : ''; | ||
| if (!isUsernameAsciiAlnum(username)) { |
| }); | ||
| return; | ||
| } | ||
|
|
Comment on lines
+38
to
+39
| content: | ||
| '⚠️ Erro de Segurança: Seu nome de usuário contém caracteres não suportados (acentos ou símbolos). Para garantir a integridade do banco de dados, apenas nomes no padrão ASCII básico podem resgatar Falcoins.', |
| // Security validation: block usernames that are not basic ASCII alphanumeric | ||
| const username = interaction.user && interaction.user.username ? interaction.user.username : ''; | ||
| if (!isUsernameAsciiAlnum(username)) { | ||
| const type = detectInvalidCharType(username); |
| ? interaction.user.username | ||
| : ''; | ||
| if (!isUsernameAsciiAlnum(username)) { | ||
| const type = detectInvalidCharType(username); |
Comment on lines
+37
to
+38
| content: | ||
| '⚠️ Erro de Segurança: Seu nome de usuário contém caracteres não suportados (acentos ou símbolos). Para garantir a integridade do banco de dados, apenas nomes no padrão ASCII básico podem resgatar Falcoins.', |
Comment on lines
+16
to
+25
| /** | ||
| * @description Attempts to categorize the first invalid character in a username. | ||
| * Returns a short string describing the detected type: 'accented', 'emoji', 'non-latin', 'symbol', 'space', or 'other'. | ||
| * This is a heuristic to aid logging/auditing and is intentionally conservative. | ||
| * @param {string} username | ||
| * @returns {string} | ||
| */ | ||
| function detectInvalidCharType(username) { | ||
| if (!username || typeof username !== 'string') return 'empty'; | ||
| for (const ch of username) { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Esta PR introduz uma camada de validação estrita para nomes de usuários (usernames) que interagem com o sistema de economia do bot. A partir desta versão, apenas nomes que utilizam o padrão ASCII alfanumérico básico (A-Z, 0-9) são autorizados a executar operações que envolvam leitura ou escrita no banco de dados, especificamente no comando work.