¿ Agujeros de seguridad en el software pueden venir en más formas que los programadores pueden imaginar. Uno de estos ataques es la saturación del búfer , cuando un atacante proporciona más información que un programa puede manejar. En particular, los escenarios de programación, como la programación del sistema o programación C bajo nivel, buffers de cadenas son vulnerables a la explotación. Ciertas técnicas de manejo de cadenas se pueden emplear para prevenir estos ataques . Estas técnicas incluyen el monitoreo del tamaño de la cadena , comprobar los límites de búfer y el uso de funciones de manejo seguras . Cuerda saturaciones de búfer
Cuando los programadores escriben código para controlar la entrada del usuario textual, que la entrada a menudo se mueve a través de un tampón o variable. Buffer " rebasamiento " ocurre cuando el programador no crea un buffer de tamaño suficiente para manejar la entrada del usuario . La entrada no se detiene cuando el buffer se detiene. Más bien , el programa guarda el texto en la memoria inmediatamente después de la memoria intermedia , que podría sobrescribir datos cruciales del programa . Búfer de cadena se desborda con mayor frecuencia se producen cuando los programadores no comprobar correctamente la entrada del usuario .
Comprobación de límites
entrada de usuario a menudo puede extenderse más allá de los límites de una matriz por el mal límite de cheques. Particularmente en C, donde las cadenas se representan como conjuntos de caracteres , insertar y manipular cadenas en estas matrices puede llegar a ser complicado. Es posible que los valores de índice de matriz calcular mal y sobrescribir ubicaciones en la memoria fuera de la formación . Por siempre incluyendo el código que comprueba los límites de la matriz para asegurar que no se sobrescribe , el programador puede limitar el acceso a la cadena de la matriz.
Con grandes Buffers
lenguajes de alto nivel, como C # o Java, el programador puede utilizar los objetos de entrada específicos que contienen grandes cantidades de memoria . BufferedReader de Java es un buen ejemplo de esto. El usuario puede crear este objeto con una gran desgraciado o un palo con su gran tamaño de búfer predeterminado para manejar la entrada . El objeto se encarga de texto en el búfer . En lenguajes de bajo nivel como C , más probable es que las matrices de caracteres de uso del programador. En ese caso, el programador debe asegurarse de que la matriz de caracteres recepción de datos sigue siendo lo suficientemente grande como para manejar cualquier tamaño de datos posibles.
Utilizar las funciones de Secure
En cuanto a la entrada del usuario va, el lenguaje de programación C emplea diferentes funciones para diferentes operaciones de entrada . No todas estas opciones son seguras. Por ejemplo, el Obtiene función no comprueba la entrada del usuario en absoluto, y permitirá que pase nada en el programa. La función strcpy no realizará ninguna comprobación de límites. En cambio, otras funciones de seguridad deben ser empleados , como los fgets o funciones strncpy .