Entendendo
Observe o seguinte código, onde temos uma rotina de inserção no banco de dados:
Esse código te faz mal? Sentiu um frio na espinha? Ou talvez, uma vontade de vomitar?
Se você conhece SQL Injection, você sabe que essa query possibilita a
Por quê? Esse código não tem uma validação de dados na entrada do usuário.
Eu poderia, por exemplo,
Veja um exemplo:
Playstation III S '; DROP TABLE Produtos; --
a aspa simples e os dois-pontos representam um macete para invalidar todo o código anterior, pois a string query não está fazendo tratamento da aspa simples, com isso, o macete fecha a string e deixa vulnerável a inserção de declarações SQL, e para complementar, os dois traços -- transformam em comentário todo o código posterior ao injetado. Nesse exemplo, estamos deletando a tabela Produtos no banco de dados. Dá para imaginar o estrago?
Resolvendo
Veja um exemplo de como resolver esse
Repare que agora a string query está diferente, estamos utilizando @parametrização. Posteriormente, fizemos a substituição desses parâmetros pelo valor, onde,
cmd.Parameters.addWithValue(string parameter, object value)
faz todo o trabalho de validação antes de mandar o código para o banco de dados.
Essa foi uma prosa simples de como injetar códigos maliciosos em SQL e como resolver esse perigo.
Quem estiver interessado em se aprofundar no assunto, existe um artigo no codeproject falando a respeito.
Até a próxima.
Nenhum comentário :
Postar um comentário