¿Cómo se realizan las pruebas básicas para la aplicación web? Herramienta en línea hecha con PHP (formularios, acceso de shell, sesión) [cerrado]

-1

Creé una aplicación web en PHP (MySQL, jQuery) y ahora quiero tomar las medidas de seguridad necesarias para mantenerla en funcionamiento e inofensiva para mi VPS.

  1. La aplicación tiene varias formas públicas ( $_POST , $_GET , campos ocultos ). ¿Qué tipo de validación debo hacer?
  2. sesión de uso de la aplicación ( $_SESSION )
  3. La aplicación usa shell_exec() con la entrada del usuario
  4. Los datos se almacenan en MySQL

La entrada muy básica del usuario es el campo tipo de texto que espera la dirección URL (sin HTTPS o incluso www)

Medidas actuales:

  • Función para los datos recibidos con $_POST o $_GET

    function secured($value) {
       $value = htmlspecialchars(stripslashes(trim($value)));
       return str_replace('&', '&', $value);
    }
    
  • Uso declaraciones preparadas para MySQL

  • HTTPS

¿Cómo asegurar esta aplicación tanto como sea posible?

    
pregunta cristalix 23.11.2015 - 11:05
fuente

1 respuesta

2

La validación / desinfección de su fabricación casera / lo que sea defectuoso, arruina los datos sin brindar seguridad, ya que al aceptar los datos aún no sabe dónde se utilizarán esos datos (los diferentes lugares requieren diferentes escapes; por ejemplo, HTML requiere htmlspecialchars , donde los argumentos de shell requieren escapeshellarg ).

Debería aceptar la entrada del usuario tal como está, y solo desinfectarla cuando sea realmente necesaria, como justo antes de publicarla en una página HTML o como un argumento de shell (y se aplican diferentes reglas, no hay una función de escape de comodines que funcione en todas partes ).

Para la validación, nuevamente depende de lo que espera la aplicación. Si necesita usar un campo enviado por el usuario en su código, verifique que esté lleno y que se ajuste a lo que desea (usando filter_var , o regex si el primero no proporciona filtros para el tipo de datos que espera) antes de usarlo, de lo contrario, se arriesgará dando valores vacíos / incorrectos a las funciones que pueden causar excepciones o comportamiento inesperado.

Finalmente, compruebe OWASP, revise su código basándose en eso, tenga cuidado de copiar y pegar a Snakeoil amateur " funciones de seguridad "escritas por idiotas y considere usar un marco popular que proporcione la mayoría de estas funciones básicas (validación, hashing de contraseñas, etc.) de inmediato, con el beneficio adicional de usar el código revisado por muchas personas, como opuesto a escribir el tuyo propio.

    
respondido por el André Borie 23.11.2015 - 11:37
fuente

Lea otras preguntas en las etiquetas