interessante.. In questi giorni cerco di concretizzare. Se non riesco ti posso chiedere una mano?
interessante.. In questi giorni cerco di concretizzare. Se non riesco ti posso chiedere una mano?
cmq ho messo giu una classe
Non basata sù ip e timestamps però. In quanto poco sicura per via della possibilità di modificare un ip durante la sessione
le due funzioni checkLockOutTime() e checkLockOutTries() verranno richiamate in due variabili nella pagina di controllo login, se risulteranno true insieme al controllo di username e password, ok.... se risulteranno false bloccheranno per 3 tentativi e si sblocchera dopo 10 minuti e il display nella pagina di login saràCodice PHP:<?php
/**
*
*/
class Brute
{
const LOCK_TRIES = 3;
const LOCK_TIME = 10;
public static function startLockOut()
{
$_SESSION['lock-time'] = date('Y-m-d H:i:s');
}
public static function endLockOut()
{
if (!empty($_SESSION['lock-time'])) {
unset($_SESSION['lock-time']);
}
if (!empty($_SESSION['lock-tries'])) {
unset($_SESSION['lock-tries']);
}
}
public static function checkLockOutTime()
{
if (isset($_SESSION['lock-time'])) {
$current_time = new DateTime(date('Y-m-d H:i:s'));
$wait_time = new DateTime($_SESSION['lock-time']);
$wait_time->modify('+' . self::LOCK_TIME . ' minutes');
if ($current_time > $wait_time) {
self::endLockOut();
return true;
}else {
return false;
}
}
return true;
}
public static function checkLockOutTries()
{
if (empty($_SESSION['lock-tries'])) {
$_SESSION['lock-tries'] = 1;
} else {
$_SESSION['lock-tries'] += 1;
}
if ($_SESSION['lock-tries'] > self::LOCK_TRIES) {
self::startLockOut();
return false;
} else {
return true;
}
}
}
Codice:
$tries = empty($_SESSION['lock-tries']) ? null : $_SESSION['lock-tries'];
$time = empty($_SESSION['lock-time']) ? null : $_SESSION['lock-time'];
$message = "User or Password Wrong ";
$message2 = "Lock tries: $tries | lock time: $time";
}
se al terzo tentativo le credenziali sono tutte vere entrerà e se poi schiaccerò logout, nella classe Session alla funzione logout faccio unset di $_SESSION[look-tries]
Ultima modifica di phelps; 21-12-2018 a 13:13