Seguridad en PHP

Diccionario de datos

Usuario: Datos de usuario

nombre nombre del usuario
clave clave del usuario
intentos cantidad de intentos de acceso erroneos
bloqueado flag para indicar si esta bloqueado el usuario
activo flag para indicar si esta activo el usuario
alta fecha de alta de usuario

Ip: Datos de las ip de acceso

numero numero de ip
intentos cantidad de intentos de una determinada ip
bloqueada flag para indicar si esta bloqueada la ip
alta fecha de alta de ip

Sessión

Variables principales de identificacion de sesion
$_SESSION["userid"] //identificacion de usuario
$_SESSION["loggedin"] //flag para identificar si el usuario se encuentra logeado
Asignación de tiempos de sesión
//***** Asignar tiempo de expiracion *****
$_SESSION['start'] = time();
$_SESSION['expire'] = $_SESSION['start'] + (5 * 60);

//***** Controlar tiempo de expiracion *****
$now = time();
if($now > $_SESSION['expire']) session_destroy();

Información adicional

Protección de la base de datos

* mecanismo de autorización de Apache
* modelos de acceso de diseño propio usando LDAP, archivos .htaccess, etc.

open_basedir

Mediante el uso de open_basedir se puede controlar y restringir qué directorios pueden ser usados por PHP. También se pueden definir áreas solo-Apache, para restringir todas las actividades basadas en web a archivos que no son de usuarios o del sistema.

Escapar caracteres al acceder a la base de datos
$username = mysqli_real_escape_string($db,$_POST['username']);
$password = mysqli_real_escape_string($db,$_POST['password']);  

$username = pg_escape_string($db,$_POST['username']);
$password = pg_escape_string($db,$_POST['password']);  
Registrar la cantidad de intentos de acceso
//en construcción
Bloquear ip
//**** Funcion para obtener la ip ******
function ip() {
    if (getenv('HTTP_CLIENT_IP')) return getenv('HTTP_CLIENT_IP');
    else if(getenv('HTTP_X_FORWARDED_FOR')) return getenv('HTTP_X_FORWARDED_FOR');
    else if(getenv('HTTP_X_FORWARDED')) return  getenv('HTTP_X_FORWARDED');
    else if(getenv('HTTP_FORWARDED_FOR')) return getenv('HTTP_FORWARDED_FOR');
    else if(getenv('HTTP_FORWARDED')) return getenv('HTTP_FORWARDED');
    else if(getenv('REMOTE_ADDR')) return getenv('REMOTE_ADDR');
    else return null;
}

//**** Funcion alternativa para obtener la ip ******
// Function to get the client IP address
function ip() {
    if (isset($_SERVER['HTTP_CLIENT_IP'])) return $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) return $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED'])) return $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) return $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED'])) return $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR'])) return $_SERVER['REMOTE_ADDR'];
    else return null;
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *