🟣
Secure Software Development
  • Inicio
  • General
    • Seguridad por oscuridad
    • Subresource Integrity (SRI)
  • Recomendaciones
    • Codificación de salida
    • CORS (Cross-Origin Resource Sharing)
    • JSON Web Token (JWT)
    • Lectura de archivos
    • Manejo de errores
    • SQL injection (SQLi)
    • Subida de archivos (file upload)
    • Validación de datos de entrada
Con tecnología de GitBook
En esta página

¿Te fue útil?

  1. Recomendaciones

Validación de datos de entrada

Recomendaciones

  • Asegurar que todos los datos de entrada sean validados semántica y sintácticamente previos a ser utilizados.

  • La validación semántica implica garantizar que los datos de entrada son correctos en términos del contexto en el que se están utilizando, es decir, tengan sentido. Por ejemplo, un monto de una transacción no debe ser negativo.

  • La validación sintáctica implica garantizar que los datos de entrada estén estructurados educadamente y sean del tipo correcto. Por ejemplo, si un campo de entrada espera un número de tarjeta de crédito, solo se deben aceptar datos de entrada que contengan dieciséis dígitos. Cualquier otra cosa debe rechazarse como entrada no válida.

    • Si bien es posible realizar verificaciones de tipo de datos manualmente, muchos lenguajes de programación brindan funciones integradas. Por ejemplo, PHP tiene las funciones ctype_alpha(), ctype_digit() y ctype_alnum() para comprobar si una cadena contiene solo letras, solo números o letras y números. Python, por ejemplo, tiene las funciones isalpha(), isnumeric() y isalnum() para el mismo propósito.

  • Las validaciones de datos de entrada deben realizarse del lado del servidor. Las validaciones del lado del cliente se pueden omitir.

  • Rechazar y no limpiar. Las entradas maliciosas pueden crearse para aprovechar esto. Es decir, las tareas de reducción de inconsistencias y errores pueden tener consecuencias negativas. Rechace siempre las entradas no válidas.

  • No utilizar igualdad abstracta con variables de tipos imprecisos en operaciones sensibles a la seguridad. Un atacante podría eludir los controles enviando valores que cumplan con las comprobaciones de igualdad abstracta, por lo tanto, las aplicaciones deben convertir la entrada al tipo de datos esperado y usar comparaciones de igualdad estrictas.

// Ejemplos de comparación en JavaScript
// comparación de igualdad abstracta
"1" == 1;
true
"1" == true;
true

// comparación de igualdad estricta
"1" === 1;
false
  • La validación es la primera línea de defensa. La validación de datos de entrada puede ayudar a filtrar entradas maliciosas. Sin embargo, no se debe utilizar como la única línea de defensa.

AnteriorSubida de archivos (file upload)

Última actualización hace 1 año

¿Te fue útil?