Aumentare la Sicurezza di una web application

di il
6 risposte

Aumentare la Sicurezza di una web application

Avrei la necessità di aumentare la sicurezza ad una web application in php da me sviluppata.
A parte le cose più elementari come sql injection cosa potrei fare?

L'applicazione è già in https
Vorrei impostare un blocco sull'IP

Ci sono altri modi per esempio copiare un file in locale e farlo leggere alla web application per autenticare l'accesso o cose simili?

Grazie

6 Risposte

  • Re: Aumentare la Sicurezza di una web application

    Eh?
    Comincerei con pdo.
    cura particolare in sanificazione input.
    togliere qualsiasi privilegio inutile.
    e soprattutto 'dipende dall'applicazione', ci sono 700 cose da fare.

    Posta un frammentino del tuo codice per fare una query e una insert into
  • Re: Aumentare la Sicurezza di una web application

    Uso già pdo.

    Questa è la funzione nel model per verificare il login.

    function _login($username,$password)
    {
    $password = md5($password);
    if( !empty($username) and !empty($password) ){

    $query = "select accounts_users.* from accounts_users
    where accounts_users.username=? and accounts_users.password=?
    and accounts_users.active=1 and accounts_users.deleted=0";

    return $this->db->query_all($query,array($username,$password));

    }else{
    return NULL;
    }
    }



    /* Generic function for execute sql query*/

    function execute_sql($sql)
    {
    $results = NULL;

    try {

    foreach ($this->db->pdo->query($sql) as $row)
    $results[] = $row;

    } catch (PDOException $e) {

    trigger_error($e->getMessage());
    return false;

    }

    return $results;

    }
  • Re: Aumentare la Sicurezza di una web application

    Non c'è nessun controllo sui dati di input
    Nè sulla loro lunghezza.
    Nè sui tipi
    un singolo md5 è l'ideale per un attacco a rainbow table.
    Poi c'è una select * da cambiare.
    Manca un limit 1

    Insomma...livello dilettante.
    Modifica come sopra accennato e riposta il frammentino, te lo correggo di nuovo
  • Re: Aumentare la Sicurezza di una web application

    Aggiungo:
    1) questione md5 per l'HASH della password (è superato da tanti anni), inoltre per non prestare il fianco a sistemi che utilizzano rainbow table si usa il SALT random.
    PHP mette a disposizione algoritmi più adeguati come BCRYPT e il più moderno (e resistente) Argon2i.
    Qui tutto quello che ti serve per prendere spunto (o fare copia incolla del codice ):
    https://php.net/manual/en/function.password-hash.ph

    2) segui i consigli che ti ha dato @+m+ e che condivido

    3) una prima protezione da implementare a supporto di applicazioni web esposte su internet è quella di filtrare le richieste tramite un WAF (Web Application Firewall).
    Lo si installa in modalità reserve proxy o direttamente sulla macchina HOST. Nel mondo Open Source il più famoso è Mod Security
    Altra soluzione è utilizzare servizi esterni. I più famosi sono: Cloudflare, SUCURI

    4) un filtro ip per l'area admin è sempre una buona idea
  • Re: Aumentare la Sicurezza di una web application

    Esattamente cosa intendi per controllo dati in input.
    Dovrei impostare dei limiti di lunghezza sia per user sia per password?

    Corretto il limit 1, mi è sfuggito.

    In alternativa a md5 meglio sha-1 o sha256 o md5 in cascata:
    $password = hash_hmac('sha256', $password, $salt);

    Domanda: il fatto di criptare le password vale in caso di violazione del database.

    Io vorrei anche attivare un sistema di protezione in caso ad un utente vengano "rubate" le credenziali.
    Pensavo ad un sistema di autenticazione a due fattori (es: Google Authenticator)

    Poi volevo impostare un filtro per gli IP.
    Se però gli utenti non hanno un IP statico potrebbe essere utile un controllo se l'IP è italiano, così da escludere accessi dall'estero?

    Autenticare l'accesso con un file in locale invece è una cosa non fattibile?

    Grazie.
  • Re: Aumentare la Sicurezza di una web application

    Ci sono molte cose al fuoco.
    Inizia col limitare la lunghezza degli input. Già che ci sei limita anche i caratteri usabili, inizia a togliere ; e - più tutti i non stampabili.
Devi accedere o registrarti per scrivere nel forum
6 risposte