¿Cómo Escribir Programas Seguros? - Cuidado con los valores suministrados por el usuario

12 - Cuidado con los valores suministrados por el usuario

[editar]
Tutorial creado por Mononeurona.org. Extraido de: http://www.mononeurona.org/index.php?idp=535
08 de Noviembre de 2005
Siempre hay que validar los datos que están bajo el control de los usuarios. Tenemos el caso flagrante de los "buffer overflow" descritos con anterioridad. Muchos CGIs, por ejemplo, esperan un determinado número de parámetros sin tener en cuenta que un usuario malicioso puede realizar una conexión HTTP válida con un sencillo "telnet" e introducir los datos que desee y en el formato que él quiera. Nunca debería pasarse al sistema ningún dato derivado de una entrada de usuario sin haberla validado antes (nombres de ficheros, comandos de shell, etc).

No hay que fiarse nunca de cosas como nombres de DNS, ya que un usuario con acceso a un DNS inverso puede ponerse cualquier dirección. En esos casos hay que hacer siempre una doble comprobación:

  1. Tenemos la IP del usuario
  2. Obtenemos la dirección inversa
  3. Pedimos la lista de direcciones IP pertenecientes a esa inversa resuelta
  4. Pedimos la lista de direcciones ALIAS coincidentes con esa inversa
  5. Contrastamos la lista obtenida en el punto "c" con el punto "a"
  6. Si el punto anterior es válido, verificamos que alguno de los miembros de la lista en "c" o en "d" estén en nuestra lista de acceso.

Hay muchas más cosas a tener en cuenta aquí: "argc" puede ser cero, algunos de los descriptores estándares (0-2) pueden estar cerrados o manipulados (y puede producirse el caos si el programa hace un "printf()", por ejemplo), el directorio actual puede ser ilegible o inexistente, puede existir un "alarm()" en curso al lanzar el programa, el proceso puede tener hijos que no ha creado (es normal si se invoca dentro de una "pipe"), etc. Hay que prepararse siempre para lo peor.
[editar]

Sé el primero en opinar


Tutoriales relacionados con '¿Cómo Escribir Programas Seguros?'

En este artículo vamos a intentar dar algunos consejos para la programación segura en C.... Más »
El objetivo de este documento es enseñar las bases de la instalación de un cortafuegos... Más »
Esta guía no es un documento general de seguridad. Esta guía está específicamente orientada a... Más »
Documento con fundamentos teóricos de control de accesos en redes telemáticas; se tratan temas como... Más »
Bienvenidos al manual de HTML de Indaya.A través de todos estos capítulos vamos a descubrir... Más »

Autor y licencia de '¿Cómo Escribir Programas Seguros?'


Tutorial de Mononeurona.org. Extraido de: http://www.mononeurona.org/index.php?idp=535 CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.