O OWASP Top 10 aponta os principais riscos de segurança encontrados em aplicações Web durante um período específico. Na publicação OWASP – 2021, a categoria de risco de injeção aparece na terceira posição do ranking, depois de vários anos na primeira posição. Mesmo assim, por causa das suas consequências nocivas para o sistema de informação, ainda é considerado um risco bastante pertinente para os dias atuais. De acordo com OWASP – 2021, “94% dos aplicativos foram testados para alguma forma de injeção, e os 33 CWEs mapeados para esta categoria têm a segunda maior ocorrência em aplicativos”.
Para minimizar os riscos de segurança da categoria de injeção, é importante adotar boas práticas de desenvolvimento de software seguro. Dentre essas práticas, é importante usar ferramentas de análise de código-fonte que possam detectar falhas de segurança antes da implantação do sistema no ambiente de produção.
Durante uma bateria de testes realizada no código-fonte de um script escrito em linguagem Python, a função check_user_auth(conn, username, password) foi classificada como vulnerável ao ataque de injeção SQL. Essa função recebe como argumentos um handle de comunicação com o banco de dados (conn), um nome de usuário (username) e uma senha pessoal (password). Sabe-se que os argumentos são previamente sanitizados, o que assegura que conn sempre é válido e que username e password são strings formadas por letras maiúsculas e minúsculas, dígitos numéricos, espaço em branco e caracteres de símbolos presentes na tabela ASCII.
import mysql.connector
def check_user_auth(conn, username, password):
cursor = conn.cursor()
sql_query = “””SELECT * FROM users WHERE “””\
“””username = ‘%s’ AND password = ‘%s'”””%(username,password)
cursor.execute(sql_query)
user_reg = cursor.fetchall()
if not user_reg:
Auth_Boolean = False
else:
Auth_Boolean = True
return Auth_Boolean
Com relação ao risco de segurança detectado na função check_user_auth(conn, username, password),
a) explique por que um adversário consegue explorar a vulnerabilidade de injeção SQL nessa função quando fornece o valor ‘ OR ‘1’=’1 para ambos os argumentos username e password.
b) explique as alterações que devem ser realizadas na atribuição da string sql_query e na chamada do método cursor.execute() para mitigar o ataque de injeção SQL realizado com a manipulação maliciosa dos argumentos username e password dessa função.
CONTEÚDO EXCLUSIVO
Confira nossos planos especiais de assinatura e desbloqueie agora!
Ops! Esta questão ainda não tem resolução em texto.
Ops! Esta questão ainda não tem resolução em vídeo.
Questões Relacionadas
O quadro a seguir apresenta as principais colunas das tabelas Turmas e PreInscricoes, bem como o domínio de dados dessas colunas.
| Tabela | Coluna | Domínio de Dados | Participa em chave primária ou estrangeira? |
| Turmas | IDTurma | Inteir… |
Nome varchar(255),
Sobrenome varchar(255),
Endereco varchar(255),
Cidade varchar(255) );
NomeProduto varchar(255),
PrecoProduto number)
PessoaId number,
Quantidade number)
Rumo Futuro: Como a Globo usa IA generativa para transformar a indústria de mídia
De olho na evolução das TVs conectadas, o conglomerado de mídia está avançando em direção à hiperpersonalização
Silenciosamente, a Globo está usando os mais recentes avanços em tecnologia para transformar partes fundamentais do seu negócio. Nos últimos meses, o conglomerado tem intensificado o uso avançado de ferramentas como inteligência artificial (IA) para a amplificação da capacidade criativa de seus profissionais e o aumento de eficiência na entrega de publicidade.
Em conversa com Rumo Futuro, o diretor de estratégia e tecnologia da Globo, Raymundo Barros, detalhou os projetos que a empresa tem conduzido n…



