Pergunta

Usando SqlParameters é um método recomendado para evitar SQL Injection em suas consultas de banco de dados. Onde posso encontrar a função / código que sanitizes internamente esses parâmetros? Eu gostaria de voltar a utilizar esta função em uma implementação customizada meu. Tentei encontrá-lo com refletor, mas não teve sucesso.

Foi útil?

Solução

Ele protege contra SQL Injection, não XSS, e não há nenhum código ou função que desinfeta os dados de parâmetro.

A proteção é realizada por transmitir os valores dos parâmetros para o servidor separadamente da cadeia de consulta, de modo que os valores são não substituído diretamente na instrução SQL.

Então, ao invés de SQL Server em execução algo como isto:

SELECT * FROM [table] WHERE [column] = ParameterValue

É mais como se passou algo como isto:

DECLARE @ParamValue int
  -- //@ParamValue variable is populated from the framework in a safe way
SELECT * FROM [table] WHERE [column] = @ParamValue

Esta é mais rápido e muito mais seguro e robusto do que uma função que teria de avaliar os dados de parâmetros. Tal função precisaria ser muito complexo (leia-se propenso a erros) para as coisas do punho como escapar costume personagens e melhorias futuras.

Este passos ordenadamente lado toda a questão:. Dados são dados, o código é código, e nunca os dois devem atender


O seu comentário para o outro, agora excluído, resposta:

Se eu passar o valor O'Rourke, codifica-lo para ser O''Rourke para que ele não quebrar a consulta. Corrigir?

Não, isso não é correto. A variável é criada directamente a partir de um bloco de dados, e assim, não escapando especial ou codificação é necessária.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top