Tips de seguridad en PHP

Inked by Fran Dieguez
  1. Utiliza los parámetros de PDO o mysqlrealescape_string sobre valores SQL para evitar la inyección del SQL.

  2. Utiliza htmlspecialchars/htmlentities/strip_tags para escapar HTML y Javascript así evitaras ataques XSS.

  3. Utiliza sesiones y asegura los sockets para prevenir que roben la sesión además almacena un símbolo especial md5 ej: md5(uniqueid(rand(),time)) en la sesión y comprobarla con un campo oculto en método POST y así prevenir que otro usuario ingrese. Ejemplo:

    if ($_SESSION [’seguridadMd5′] == $_POST[’campoculto’]) {
    // Sesión segura
    }
  4. Usa escapeshellarg/escapeshellcmd cuando llames comandos exec para así evitar injección de comandos.

  5. Quita los linebreaks (BR, P y BLOCKQUOTE tags) de headers entrantes para prevenir la terminación y la inyección de códigos. Fixed PHP > 5.1

  6. Utiliza comprobación md5 en valores y sessionid serializados para validar su integridad.

  7. Utiliza el === para verificar valores de entrada (identidad de datos y de tipos). Utiliza está configuración,

  8. Cambia algunos valores de configuracion de php

    ini_set(”display_errors”, false);
    ini_set(”log_errors”, true);
    ini_set(”error_log”, ”ruta/php.log”);
    ini_set(”session.save_path”, ”ruta/www”); // o “mm” session module o store en sqllite db
  9. Cambia algunos valores de php.ini

    php.ini expose_php=off
    php.ini register_globals=off
    Apache servertokens=prod
  10. Para cambios de sesión usa sessionregenerateid.

  11. Usa secure sockets SSL para trasacciones comerciales.