Tips de seguridad en PHP

  1. Utiliza los parámetros de PDO o mysql_real_escape_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
}
  1. Usa

escapeshellarg/escapeshellcmd cuando llames comandos exec para así evitar injección de comandos.

  1. 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

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

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

  4. 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
  1. Cambia algunos valores de php.ini
php.ini expose_php=off
php.ini register_globals=off
Apache servertokens=prod
  1. Para cambios de sesión usa session_regenerate_id.

  2. Usa secure sockets SSL para trasacciones comerciales.