Visualizzazione dei risultati da 1 a 2 su 2

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2013
    Messaggi
    313

    Sicurezza login $_SESSION attacchi XSS CSRF

    Eccomi finalmente ad un punto criciale del mio programma, LA SICUREZZA...
    Come molte guide dicono "non fidarsi mai degli input" sto leggendo molte cose al riguardo di attacchi XSS e CSRF e volevo riscrivere la struttura del mio login per evitare noie visto che le visite stanno aumentando vorrei proteggermi prima che accada qualcosa, e poi appena possibile, passo tutto su un cloud e integrerò la crittografia SSL per stare leggermente più tranquillo :-D

    Veniamo a noi, attualemente la struttura della mio login è la seguente :

    la mia ACTION chiama una funzione pubblica e poi dalla pubblica chiamo una funzione privata in modo da evitare l'accesso diretto alla funzione che che crea la mia sessione, ovviamente per togliere eventuali script dagli input la mia username e password viene pulita grazie a strip_tags "Eliminando cosi la possibilità di eseguire un'attacco XSS"

    codice:
    public function login()
        {
                if(isset($_POST['submit'])){
                  $username = strip_tags($_POST['username']);
                  $password = strip_tags($_POST['password']);
                    $this->valida_accesso($username, $password);               
                }else{                
                    header('location:'. base_url());//errore login o hack
                }
        }
    
    private function valida_accesso($username=null,$password=null){ 
                
                if(($username !="") && ($password != "")){
                    $password_criptata = md5($password);                
                    $this->load->model('account_model');                
                    $riga_account=$this->account_model->verifica_login($username, $password_criptata); 
                    
                    
                    if(count($riga_account)>0){
                        //prelevare livello
                        $this->load->model('dati_account_model');
                        $dati_account=$this->dati_account_model->cerca_da_id_account($riga_account->id);
                       
                        
                        //caso verificato  
                        if($username==$riga_account->username){
                            if((($dati_account->livello >= "1") || ($dati_account->livello <= "4"))&&($riga_account->abilitato == "0")){
                            session_start();
    
                            $_SESSION['username'] = $riga_account->username;
                            $_SESSION['password'] = $riga_account->password;
                            $_SESSION['id'] = $riga_account->id;
                            $_SESSION['livello'] = $dati_account->livello;
                            $_SESSION['nome'] = $dati_account->nome;
                            $_SESSION['cognome'] = $dati_account->cognome;
                            
                            
                            if($dati_account->livello ==4){
                                $_SESSION['super_admin']=true;
                            }
                            switch($_SESSION['livello']){
                                case "4":
                                    header('location:'.base_url().'super_admin/index');
                                break;
                                case "3":                                
                                    header('location:'.base_url().'admin');
                                break;    
                            }
    
                            }else{//permesso negato
                               $type= "alert alert-danger";
                            $messaggio = "<center><b>Permesso Negato</b></center><br /> Verrai rendirizzato alla HOME fra breve";
                            $url = "";
                            $this->user_model->messaggio_admin($type,$messaggio,$url);  
                            }
                        }else{
                            $type= "alert alert-danger";
                            $messaggio = "<center><b>Errore Dati inseriti</b></center><br /> Verrai rendirizzato alla HOME fra breve";
                            $url = "";
                            $this->user_model->messaggio_admin($type,$messaggio,$url);
                        }
    Ora per proteggermi da un'attacco CSRF ho capito come generare un codice tocken :
    codice:
    $old_sessionid = session_id();
    
    session_regenerate_id();
    
    $new_sessionid = session_id();
    
    echo "Old Session: $old_sessionid<br />";
    echo "New Session: $new_sessionid<br />";
    ma come posso usarlo ???

  2. #2
    Utente di HTML.it L'avatar di Webmaster76
    Registrato dal
    Mar 2001
    residenza
    Torino
    Messaggi
    298
    Leggi qui:

    http://www.sitepoint.com/preventing-...est-forgeries/

    spiega come funzionano questo tipo di attacchi e su come proteggersi.

    Un nuovo cms/framework... vuoi collaborare al progetto?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.