[PHP] Bloccare richieste indesiderate cURL

MaryDB

Nuovo Utente
23 Nov 2017
17
0
1
Ciao,

ho un quesito che non riesco a risolvere. La situazione è la seguente: esiste un codice php che controlla ed accetta le richeste esterne per accedere al DB. Se le credenziali sono sbagliate l'utente viene indirizzato a farsi un giro da un'altra parte. Fin qui tutto bene. Quello però che non mi è chiaro, è come sia possibile che se riutilizzo una vecchia richiesta (encodata base64 come tutte) e la inserisco nel browser, quest'ultimo mi restituisca una serie di caratteri (la rispota del DB come credenziali e dei dati) anche se di fatto è stata una vecchia richiesta oramai non più attiva.
Se provo a verificare sul DB, non vedo nessun dato che viene scritto, quindi la richiesta non ha prodotto un'azione diretta, ma solo indiretta, come conseguenza di accertare le credenziali.

Ora, la mia domanda è: è normale questa cosa ?
Come mai inserendo un url utilizzato in precedenza, ricevo sempre una risposta dal server (php) ?
E' possibile escludere/reindirizzare queste richieste "vuote" ?

Grazie.
 

macus_adi

Utente Attivo
5 Dic 2017
1.119
63
48
IT/SW
Quello però che non mi è chiaro, è come sia possibile che se riutilizzo una vecchia richiesta (encodata base64 come tutte) e la inserisco nel browser, quest'ultimo mi restituisca una serie di caratteri (la rispota del DB come credenziali e dei dati) anche se di fatto è stata una vecchia richiesta oramai non più attiva.
Potresti spiegare meglio?
  1. Cosa passi?
  2. A chi la passi?
  3. Come la passi?
 

MaryDB

Nuovo Utente
23 Nov 2017
17
0
1
Ciao Macus,
dunque, io passo una stringa con codice chiamata, credenziali e stringa di dati, tutta codificata base64, e la passo ad una pagina PHP, che la interpreta, la passa al DB pe controllare le credenziali e poi se sono giuste, smista i dati ad altri script php.
In pratica faccio una chiamata al file server.php?c=C1111&a=VzVwZEEsUXpVek1UTSxSVU5N....
 

MaryDB

Nuovo Utente
23 Nov 2017
17
0
1
Ciao,
mi è un pò difficile postare tutto il codice, in quanto è integrato in un sistema più complesso che riguarda più server/client contemporaneamente. Quello che posso fare è farti vedere un esempio di quello a cui mi riferisco, sperando che possa essere d'aiuto a comprendere quanto chiedo :
 

Allegati

macus_adi

Utente Attivo
5 Dic 2017
1.119
63
48
IT/SW
Hai lasciato un qualche
PHP:
echo $qualcosa
in qualche if/switch, o in alternativa hai stampato i dati di qualche elaborazione!
 

MaryDB

Nuovo Utente
23 Nov 2017
17
0
1
no. niente echo. Ora controllerò anche sugli altri server, ma non ricordo di averne visti.

Ma la cosa che mi lascia perplesso, è che possa comunque inviare questa richiesta, anche se la chiamata è stata chiusa (creato un nuovo valore) piuttosto che non esiste.
 

macus_adi

Utente Attivo
5 Dic 2017
1.119
63
48
IT/SW
Mi fido, ma guarda che quella potrebbe essere una semplice echo(base64_decode($str)); nascosta da qualche parte del tuo codice. Prova a rinominare la pagina e a crearne una nuova con lo stesso nome, poi inserisci echo(base64_decode($_GET['a'])); il risultato è come quello da te riportato...
Togli echo bla bla... e vedrai che la pagina non stampa nulla!
 
  • Like
Reactions: MaryDB

MaryDB

Nuovo Utente
23 Nov 2017
17
0
1
Ciao Marcus,
effettivamente hai ragione. C'era un echo presente su una vecchia pagina che veniva richiamata da questa, ed ecco spiegato il motivo della risposta. Grazie.

Comunque rimane il fatto che il server risponda, anche se non dovrebbe farlo. Perchè ?
 

MaryDB

Nuovo Utente
23 Nov 2017
17
0
1
io controllo; infatti se l'utente inserisce user e password sbagliate, lo reindirizzo. Quello però che non riesco a fare (sempre che sia possibile farlo) è che se l'utente mi manda una stringa uguale a quella di ieri o di 5 minuti fa, (dove ha avuto accesso correttamente al server), il server, non la identifica come sbagliata/non valida, ma la gestisce come se fosse attuale.
Questo si riperquote nel momento in cui un altro utente utilizza la medesima stringa per l'accesso ?
Forse sono io inesperto di PHP, e per questo vorrei capire se questo comportamento sia normale, oppure no.
 

macus_adi

Utente Attivo
5 Dic 2017
1.119
63
48
IT/SW
Ma l'applicazione in questione cosa fa? ossia questa pagina effettua il login?? i dati sono rappresentati in base64 e cosa contengono?
 

MaryDB

Nuovo Utente
23 Nov 2017
17
0
1
Ciao,
questa pagina semplicemente accetta richieste dati. Non c'è un vero e proprio form dove inserire i dati, ma i dati vengono trasmessi direttamente a questo indirizzo. Come ti ho scritto, i dati sono tutti encodati base64 e contengono un codice chiamata generato dal client, credenziali di accesso, dati di scambio che dovranno essere inseriti nel db. Questi dati verranno poi gestiti da altre pagine, non direttamente da questa.