PHP ha integrato la gestione delle sessioni che è possibile utilizzare, ad es.
session_start();
<?php
$_SESSION[] = something;
session_destroy(); <- when you want to end that current session
?>
Per la tua azione modulo: <?php echo($_SERVER[PHP_SELF]);>
per mitigare xss
se usi questo metodo, ogni sessione assegnerà una chiave utente sulla macchina degli utenti e quando una sessione viene aperta altrove, cerca quella chiave - se la coincide accederà a quella sessione - se non è così inizia una nuova sessione.
Puoi utilizzare session_destroy()
per eliminare tutti i dati di sessione per quell'utente o session_unset();
per destare una sessione particolare.
Se si sta utilizzando un database SQL, è necessario assicurarsi che venga eseguita la convalida, altrimenti si lascerà l'app Web aperta a un numero di attacchi, ad es. XSS, SQLi, ecc. Che possono far trapelare i dati degli utenti, per un'app / sito web di social media che è molto brutto per ovvi motivi. Ad esempio, per un campo di accesso, qualcosa di simile sarebbe sicuro:
<?php
function clean($string) //custom cleaning with regex
{
$string = str_replace(' ', '-' $string);
$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string);
return preg_replace('/-+/', '-', $string);
}
if(isset($_POST('submit'))) // built in sanitising
{
$sanitised_name = filter_input(INPUT_POST, 'username', FILTER_SANITISED_ENCODED, FILTER_FLAG_STRIP_HIGH);
}
echo $sanitised_name; // print out the sanitised name
echo .clean($_POST['username']).; // print out using the custom function
?>
Sopra mostra due modi diversi per ottenere risultati molto simili con funzioni incorporate. il primo blocco utilizza regex che è possibile limitare a qualsiasi set di caratteri che si desidera utilizzare per gli utenti, mentre il secondo blocco utilizza le funzioni incorporate di PHP, alla fine solo echo, in modo da poter vedere la differenza per qualsiasi input che si utilizza.
EDIT: quando memorizzi i nomi utente e le password degli utenti dovresti memorizzare il nome in chiaro nel tuo database, ma le password dovrebbero essere salate e con hash, quindi piuttosto che verificare se un nome utente e una password coincidono, controlla se un hash di nome utente e password corrispondono hai nel tuo database - ma assicurati di impostare una connessione sicura prima che un utente invii qualcosa - altrimenti inviano informazioni al tuo sito in modo non sicuro - abbastanza facile per qualcuno di MITM e rubare credenziali.
In realtà ho scritto un articolo che si occupa specificamente della protezione di PHP, SQL, cookie e sessioni da attacchi come XSS, SQLi, dirottamenti di sessione ecc. se è utile per te, lascerò un link ad esso sotto poiché va in maggiori dettagli: link Proprio come un disclaimer non lavoro in sicurezza - Io sono uno studente che studia compSec ma spero di lavorare nel settore nei prossimi due anni - se c'è qualcosa che manca o meglio della mia risposta mal felicemente modificarlo per migliorarlo dato che alcune persone qui sono estremamente ben informate!
Buona fortuna con l'app per i social media e il sito Web - è bello vedere che si sta cercando di renderlo sicuro sin dall'inizio!