Domanda

Qual è la procedura migliore per assicurarsi che determinate chiamate Ajax a determinate pagine siano accettate solo da utenti autenticati?

Per esempio:

Diciamo che ho una pagina principale chiamata blog.php (Lo so, la creatività abbonda).Diciamo anche che esiste una pagina chiamata elimina.php che cerca il parametro post_id e quindi elimina alcune voci da un database.

In questo esempio molto artificioso, c'è un meccanismo su blog.php che invia una richiesta tramite ajax a delete.php per eliminare una voce.

Ora questo meccanismo sarà disponibile solo per gli utenti autenticati su blog.php.Ma cosa impedisce a qualcuno di chiamare semplicemente delete.php con un mucchio di numeri casuali ed eliminare tutto nel sito?

Ho fatto un test rapido in cui ho impostato una variabile di sessione in blog.php e poi ho eseguito una chiamata ajax a delete.php per restituire se la variabile di sessione era impostata o meno (non lo era).

Qual è il modo accettato per gestire questo genere di cose?


OK.Devo essere stato pazzo la prima volta che l'ho provato.

Ho appena fatto un altro test come quello che ho descritto sopra e ha funzionato perfettamente.

È stato utile?

Soluzione

Avevi ragione nel provare a utilizzare le variabili di sessione.Una volta che l'utente si è autenticato, dovresti memorizzare tali informazioni nella sua sessione in modo che ogni visualizzazione di pagina successiva le veda.Assicurati di chiamare session_start() su entrambe le pagine (blog.php e delete.php) prima di accedere a $_SESSION.Assicurati inoltre di avere i cookie abilitati e, in caso contrario, dovresti passare un parametro aggiuntivo nella stringa di query, solitamente PHPSESSID=<session_id()>.

Altri suggerimenti

Non è consigliabile fare affidamento sulle sessioni per l'autenticazione senza intraprendere azioni aggiuntive.Continua a leggere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top