nilsonLazarin / WeGIA

WeGIA: Web gerenciador para instituições assistenciais
Other
5 stars 6 forks source link

Análise de vulnerabilidade do arquivo html/atendido/cadastro_atendido_pessoa_existente.php #375

Closed joaopontes22 closed 1 month ago

joaopontes22 commented 5 months ago

Vulnerability Analysis Vulnerabilidades encontradas no código:

  1. SQL Injection: As consultas SQL estão sendo construídas diretamente concatenando strings sem a devida proteção contra injeção de SQL. Por exemplo, a linha $resultado = mysqli_query($conexao, "SELECT * FROM funcionario WHERE id_pessoa=$id_pessoa"); está vulnerável a esse tipo de ataque.

  2. Falta de Validação de Dados: No trecho em que o CPF é recebido a partir do parâmetro GET ($cpf = $_GET['cpf'];), não há validação suficiente para garantir que o valor recebido é seguro e válido.

  3. Uso de mysqli_fetch_array() sem Tratamento de Erros: Em alguns trechos do código, como em $id_cargo = mysqli_fetch_array($resultado);, não é verificado se a consulta retornou algum resultado antes de utilizar a função mysqli_fetch_array(), o que pode gerar um erro.

  4. Diretiva header após a saída HTML: A diretiva header para redirecionamento está sendo utilizada após a saída de conteúdo HTML, o que pode causar problemas de redirecionamento no PHP.

  5. Direcionamento de Página Inseguro: O código utiliza a função header("Location: ".WWW."html/home.php?msg_c=$msg"); para redirecionar para outra página, porém não está claro se a variável WWW está corretamente definida e segura para isso.

  6. Manipulação de Strings sem Controle: Em várias partes do código, como na validação do CPF e na geração de novos tipos e status de atendido, as strings são manipuladas diretamente sem um controle adequado, o que pode levar a problemas de segurança.

Recomendações:

  1. Utilizar Prepared Statements ou outras formas de prevenção contra SQL Injection para todas as consultas SQL.

  2. Validar e sanitizar adequadamente os dados recebidos, principalmente os provenientes de fontes externas como parâmetros GET.

  3. Verificar se as consultas SQL retornam resultados antes de utilizar funções como mysqli_fetch_array() para evitar erros.

  4. Certificar-se de que as diretivas header de redirecionamento sejam utilizadas antes de qualquer saída de conteúdo HTML.

  5. Validar e escapar corretamente as variáveis usadas em redirecionamentos, para garantir que não haja vulnerabilidades.

  6. Implementar validações mais robustas para dados sensíveis, como o CPF, e utilizar funções de tratamento de strings seguras.

Essas são as principais vulnerabilidades e recomendações para melhorar a segurança do código fornecido.

nicolly015 commented 1 month ago