Cómo evitar la inyección de código en c ++

La primera regla de evitar código de inyectar en programas de C ++ no es nunca, nunca, permitir la entrada del usuario para ser procesado por un intérprete de lenguaje de propósito general. Un error común con SQL-inyección es que el programa acepta la entrada del usuario como si siempre eran aceptables y lo inserta en una consulta SQL que entonces buques frente al motor de la base de datos para su procesamiento.

A modo de ejemplo, un programa pidiendo la entrada del usuario en una fecha podría ser pirateado. El método más seguro y más fácil de usar sería proporcionar al usuario un gráfico del calendario desde el que podía seleccionar las fechas de inicio y fin. El programa entonces crear una fecha en base a lo que el usuario ha hecho clic.

Si esto no es posible, entonces el programa debe comprobar cuidadosamente la entrada para asegurarse de que la entrada estaba en el formato apropiado para una fecha, en este caso aaaa / mm / dd - en otras palabras, cuatro dígitos seguidos por una barra seguidas de dos dígitos y una barra y finalmente dos dígitos más. Nada más se debe considerar de entrada aceptable.

Video: Curso PHP MySQL. Inyección SQL I. Vídeo 47

A veces no se puede ser tan específica acerca del formato. Si debe permitir al usuario introducir texto flexibles, entonces al menos puede evitar caracteres especiales. Por ejemplo, es casi imposible de hacer la inyección de código SQL sin utilizar ya sea una comilla simple o doble.

No se puede insertar etiquetas HTML sin necesidad de utilizar un menor que (lt;) y mayor que (gt;) señal. O usted podría tomar el enfoque de que no se tolerará que no sea nada de texto ASCII:

Video: Evitar Inyeccion SQL en PHP

// comprobar alguna cadena `s` para asegurarse de que es ASCIIsize_type directamente de s.find_first_not_of = ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_") -Si (off! = String :: npos) {cerr lt; lt; "Errorn"-}

Este código busca en la cadena s para un carácter que no sea uno de los caracteres de la A a la Z, de la aa la z, del 0 al 9, o un guión. Si encuentra un carácter tal, entonces el programa rechaza la entrada.

Si usted permite que sólo los caracteres latinos muestran aquí, su aplicación no será utilizable en muchos mercados extranjeros, como aquellos que no utilizan conjuntos de caracteres en inglés (como el árabe, chino, hebreo, o el ruso, por nombrar sólo algunos). Es posible que tenga que tomar el camino contrario y sólo tiene que buscar los malos caracteres.

Artículos Relacionados