Tips de seguridad en PHP
-
Utiliza los parámetros de PDO o mysql_real_escape_string sobre valores SQL para evitar la inyección del SQL.
-
Utiliza htmlspecialchars/htmlentities/strip_tags para escapar HTML y Javascript así evitaras ataques XSS.
-
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
}
- Usa
escapeshellarg/escapeshellcmd cuando llames comandos exec para así evitar injección de comandos.
-
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
-
Utiliza comprobación md5 en valores y sessionid serializados para validar su integridad.
-
Utiliza el === para verificar valores de entrada (identidad de datos y de tipos). Utiliza está configuración,
-
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
- Cambia algunos valores de php.ini
php.ini expose_php=off
php.ini register_globals=off
Apache servertokens=prod
-
Para cambios de sesión usa session_regenerate_id.
-
Usa secure sockets SSL para trasacciones comerciales.