Tenía curiosidad por saber si es posible proteger contra un ataque de inyección SQL eliminando todos los espacios de una entrada de String.
He estado leyendo sobre Inyección SQL en OWASP , pero no mencionan nada sobre la eliminación de espacios , ¿entonces tenía curiosidad por qué funcionaría o no funcionaría?
Estaba viendo esta pregunta , que pregunta sobre trim
, y la respuesta superior dice esto:
No, agregar un recorte no evitará la inyección de sql.
trim
solo elimina el espacio en el exterior de la cadena.Select * from aTable where name like '%'+@SearchString+'%'
Si @SearchString tiene algo como
'' update aTable set someColumn='JackedUpValue' where someColumn like '
Luego, cuando lo pones todo junto y lo ejecutas dinámicamente, obtendrás
Select * from aTable where name like '%' update aTable set someColumn='JackedUpValue' where someColumn like '%'
Sin embargo, si tomaste esa cadena de búsqueda
update aTable set someColumn='JackedUpValue' where someColumn like
y realizó la operación que se muestra en esta pregunta , ¿no obtener
updateaTablesetsomeColumn='JackedUpValue'wheresomeColumnlike
que no debería ejecutarse, ¿verdad?
Tengo curiosidad por si hay alguna forma de inyección de SQL que pueda vencer esto? ¿Hay una palabra comandos peligrosos? Si esto puede ser derrotado, ¿eliminar espacios al menos ayudaría un poco a la defensa?
Nota: Estoy haciendo esta pregunta simplemente por curiosidad, no como una forma de eludir el uso de los métodos "adecuados" de Prevención de Inyección de SQL.