O OWASP Top 10 aponta os principais riscos de segurança...
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),
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.
(Valor: 5,0 pontos)
Esta é uma questão discursiva. Assine um de nossos planos para desbloqueá-la.
As questões discursivas ajudam você a treinar a construção da resposta, organizar ideias e desenvolver uma argumentação mais próxima do que a banca espera.
-
Entenda como a banca formula o problema e o que espera como resposta
-
Aprenda a estruturar seu texto com introdução, desenvolvimento e conclusão
-
Prepare-se para uma das etapas mais decisivas da prova.