Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Impedir injeção de SQL na cláusula ORDER BY


Se você tem para lidar com strings, então a lista branca é sua melhor aposta. Em primeiro lugar, sortDirection deve ser bastante trivial para lista branca:uma comparação que não diferencia maiúsculas de minúsculas com "asc" / "desc" e você deve ser definido. Para os outros, minha preferência seria colocar na lista de permissões colunas conhecidas , talvez passando o Type esperado para os dados e validar. Mas em um aperto absoluto, você pode restringir com regex para (digamos) impor que todos sejam estritamente alfanumérico (no intervalo a-z, A-Z, 0-9 - talvez sublinhado, se necessário) - e, em seguida, adicione [] , ou seja
return string.Format("[{0}] {1}", sortColumn, sortDirection);

Mas:uma lista branca estrita de colunas conhecidas seria muito melhor, assim como uma enumeração para a direção.