Sono un principiante e questi possono essere molto ovvi per te, ma sto cercando di capire se ci sono problemi di sicurezza con questo esempio.
Oggi su Stack Overflow, ho visto il seguente post: PHP Sessions Accedi con ricordami .
La domanda riguarda la creazione di una funzione "Ricordami" per estendere la sessione auticata per le persone che hanno effettuato il login.
La risposta accettata era:
function setSession($username,$password,$cookie=null){
// Other code for login ($_POST[]....)
// $row is result of your sql query
$values = array($username,$this->obscure($password),$row['id']);
$session = implode(",",$values);
// check if cookie is enable for login
if($cookie=='on'){
setcookie("your_cookie_name", $session, time()+60*60*24*100,'/');
} else {
$_SESSION["your_session_name"] = $session;
}
}
Quindi, la mia domanda non riguarda il modo in cui dovresti fare questo, ma sono corretto nei problemi di sicurezza che ho delineato di seguito per questo esempio di codice?
Usando il OWASP Top 10 come riferimento, questi sono i problemi che vedo:
Problema 1:
Per prima cosa possiamo supporre che $session
abbia la password e il nome utente perché $value
contiene il nome utente e la password dell'utente. Anche con questa linea:
setcookie("your_cookie_name", $session, time()+60*60*24*100,'/');
Il cookie ha ora le credenziali dell'utente. Un grosso errore per me, vedi Numero 3 per ulteriori informazioni.
Problema 2:
Ho letto questo articolo OWASP dove dicono che per prevenire CSRF dobbiamo generare un associato ID casuale alla SESSIONE o al cookie.
Ovviamente in questo codice non c'è un token o un ID univoco che mi sospetti.
Numero 3:
Possiamo anche immaginare che il sito possa essere vulnerabile a "Cross-Site Scripting (XSS)"
Infatti, se le credenziali dell'utente sono memorizzate in un cookie, possiamo eseguire uno script semplice e mostrare il cookie.
alert(document.cookie);
Domanda
Sono sicuro che potrebbe esserci un altro problema, ma ho esposto la cosa più ovvia per me. Ho ragione nei problemi che ho identificato? Ho perso altri grandi problemi di sicurezza con questo codice?