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 .