Prevenção de injeção de SQL no .NET
Eu normalmente escrevo meu SQL assim no .NET
sql.Append("SELECT id, code, email FROM mytable WHERE variable = @variable ");
Então faça algo assim:
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["defaultConnection"]].ConnectionString))
{
using (SqlCommand myCommand = new SqlCommand(sql.ToString(), conn))
{
myCommand.Parameters.AddWithValue("@variable", myVariableName");
...
Mas devo também fazer isso addParameter quando os dados que recebi vem diretamente do banco de dados como assim?
likesql.Append(string.Format("SELECT group_id, like_text FROM likeTerms ORDER BY group_id ASC "));
DataTable dtLike = SqlHelper.GetDataTable(likesql.ToString());
foreach (DataRow dr in dtLike)
{
buildsql.Append(".... varId = " + dr["group_id"].ToString() + "...");
...
Isso é aceitável? Qual é a melhor prática?