Pergunta

Estou criando uma montagem em C # para MS SQL 2005. Este conjunto cria um procedimento armazenado e executa uma consulta dinâmica com base em parâmetros passados ??para o procedimento armazenado.

Existe uma função simples em C # para injeção prevent SQL?

Por exemplo

string myQuery = "SELECT * FROM dbo.MyTable WHERE lastName = '" + injectionCheck(arg1) + "'";

Esta pergunta foi respondida para a consulta padrão ... mas em situações onde não há nenhuma maneira em torno da construção de uma consulta verdadeiramente dinâmica que eu posso usar em C # para a verificação de injeção?

Por exemplo, estes provavelmente não vai funcionar:

usando @dbname;

SELECT * FROM @Table

Open de chave simétrica @keyName

etc

Foi útil?

Solução

Use parâmetros vinculados:

SqlCommand cmd = new SqlCommand(myQuery, conn);
cmd.Parameters.Add("@lastname", SqlDbType.NVarChar, 10, lastName);

Outras dicas

Use parâmetros ....

(Esta foi postado muitas vezes já)

string myQuery = "SELECT * FROM myTable WHERE lastname = @p_name";

SqlCommand cmd = new SqlCommand();
cmd.CommandText = myQuery;
cmd.Parameters.Add ("@p_name", SqlDbType.Varchar).Value = "melp";
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top