Salve a tutti,
non mi reputo un esperto di sicurezza per quanto riguarda le applicazioni web e quindi cerco spesso consigli / suggerimenti per migliorarmi.
Volevo sapere se secondo voi quel che faccio per evitare problemi possa essere sufficiente per scongiurare bachi di sicurezza nelle mie applicazioni web, vedo tra voi tanti esperti ed un confronto mi farebbe molto piacere.
Documentandomi tra le guide e seguendo alcuni script / consigli di questo forum (grazie anzitutto per quanto creato e condiviso), questo è quanto faccio:
Criptazione password di accesso
Codice PHP:
function criptpass ( $pass )
{
$passaggio = md5($pass);
$password_criptata = md5($passaggio);
return $password_criptata;
}
Eliminazione vulnerabilità XSS e HTML
Codice PHP:
function killHTML($html)
{
$myReg = '/<[^>]*?[^>]*?>/';
if(preg_match($myReg, $html))
{
$var = preg_replace($myReg, '', $html);
}
else
{
$var = $html;
}
$badHTML = array("<", ">", "//", "/>");
$var = str_replace($badHTML, '_', $var);
return $var;
}
function killXSS($var)
{
$badString = array('<javascript', '<script', '</script', '<iframe', 'onload = ', '<layer', '<meta http', '<object', '</object>', '<input', 'background = ', '<bgsound', '<style', 'http');
$goodString = array('jav-asc-rip-t', '', '', 'fr-a-me', 'onl-oad', 'la-y-er', '', '', '', '', '', '', '', 'ht_tp');
$var = str_replace($badString, $goodString, $var);
foreach($badString as $badWord)
{
if(stristr($var, $badWord))
{
$var = str_replace($badString, $goodString, strtolower($var));
}
}
return $var;
}
function killALL($var)
{
$var = killXSS($var);
$var = killHTML($var);
$var = addslashes($var);
return $var;
}
Recupero variabile POST o GET
Codice PHP:
if(isset($_GET["variabile"])) $variabile = killALL($_GET["variabile"]);
Quanto ripetuto lo eseguo per ogni variabile passata tramite form o querystring e poi utilizzo le mie variabile recuperate all'interno della pagina o delle query per recuperare informazioni dal database.
Per quanto riguarda invece l'accesso alla sezione riservata ho di base nome utente e una password (criptata come visto) nel mio db. All'atto del login:
Login
Codice PHP:
// Eseguo la ricerca nel db ed estraggo i dati dell'utente
if(utente_esiste)
{
$_SESSION['login'] = "$prefisso.$valoreDiAutenticazione";
$_SESSION['nickname'] = $nickname;
$_SESSION['password']= $password;
}
Recupero informazioni nelle pagina interne (dopo aver effettuato il login)
Codice PHP:
if(isset($_SESSION['login']) && $_SESSION['login']=="$prefisso.$valoreDiAutenticazione")
{
$nick_utente_loggato = $_SESSION['nickname'];
$pass_utente_loggato = $_SESSION['password']; #criptata
# Cerco l'utente con i dati salvati nella sessione ed estraggo i dati
$_SESSION['utente_autorizzato'] = "$prefisso.$nickname.$valoreDiAutenticazione";
$utente_autorizzato = $_SESSION['utente_autorizzato'];
}
}
Secondo voi possono andare bene come sistemi di sicurezza oppure quanto imparato fin'ora non serve a nulla?
Grazie per la pazienza, spero quanto scritto possa servire a qualcuno ed aiutarmi a migliorare