Encontré una ruptura simple en una cláusula where en uno de nuestros proyectos donde el código es tan antiguo que dicen que no pueden usar parámetros para comunicarse con ms SQL Server. Está escrito en C ++, no puedo leer este idioma y no puedo acceder al código de ninguna manera.
Para ilustrar el problema, agregué un ejemplo de una declaración no dañina, la parte en negrita es lo que el usuario puede ingresar directamente
SELECCIONAR '1 'SELECCIONA 2-- ';
La comilla simple después de 1 está causando la ruptura en este escenario. Esto es lo que he mostrado al equipo.
Luego hicieron una detección en el código que busca comillas simples y agregan otras tres comillas simples después de cada cita que encuentran. Así el ejemplo se convertiría en este
.SELECCIONA '1' '' 'SELECCIONA 2-- ';
No me gusta esta solución en absoluto, pero no puedo encontrar una manera de salir más. Los campos dentro de la base de datos se almacenan tratados como nvarchar caracteres. ¿Existe todavía la posibilidad de evitar esta práctica en cualquier tipo?