¿Marcar partes de cadenas como inseguras?

2

¿Hay una manera suave de marcar partes inseguras de una cadena? es decir, para uso en SQL.

ejemplo en php:
someFunction("safe text" . $unsafeVariable . "safe text" . $anotherUnsafeVariable);

¿Hay una forma sencilla de saber, en someFunction , qué partes de la cadena pasada no son seguras?

Podría enviar una serie de cadenas en las que cada cadena se añade a algo que dice si es seguro o inseguro, pero eso no es realmente una forma sencilla de escribir código.

    
pregunta Filip Haglund 07.04.2013 - 14:07
fuente

1 respuesta

4

En realidad, es una forma de marcar un elemento de cadena como "inseguro" y se llama declaraciones preparadas . Una declaración preparada es una pieza de código SQL que está codificada en el código fuente de la aplicación, es decir, una "cadena segura", pero con algunos marcadores de posición para los parámetros: cada marcador de posición realmente significa: "cuando se trata de ejecutar esta declaración SQL, use la cadena del argumento, pero tenga cuidado de que el argumento sea "inseguro", es decir, puede contener cualquier cosa de una manera potencialmente hostil ".

Ese es exactamente el mecanismo que está buscando: una forma de marcar partes de una declaración SQL como "insegura" y, por lo tanto, garantiza un "resafing" automático adicional.

Algunas personas usan métodos manuales y no automáticos para "hacer que las cadenas sean seguras", con funciones como mysql_really_really_espace_string_this_time_I_said_please() . Estos métodos manuales son profundamente insatisfactorios, ineficientes y ocasionalmente fallan porque se basan en algún método proporcionado por PHP para estar al tanto de todos los detalles de la sintaxis de las declaraciones aceptadas por MySQL, un paquete de software distinto . potencialmente actualizado por separado, y escrito por desarrolladores distintos que no necesariamente se sincronizan con los desarrolladores de PHP. Con declaraciones preparadas, el "escape" (o mecanismo equivalente) ocurre en lo profundo de MySQL, y podemos asumir que MySQL, al menos, está de acuerdo consigo mismo, evitando estos problemas.

    
respondido por el Tom Leek 07.04.2013 - 16:10
fuente

Lea otras preguntas en las etiquetas