Dependendo da biblioteca existem diversas proteções. Por exemplo se vc usar mysql, e fizer tudo na mão, ao invés de construir a query concatenando parametros, é possível adicionar parametros dentro do comando mysql e depois ele mesmo substitui na query. Desta forma ele reconhece se tiver um SQLI no lugar de um parâmetro.