[PHP] Bloccare richieste indesiderate cURL

  • Creatore Discussione Creatore Discussione MaryDB
  • Data di inizio Data di inizio

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.
 
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?
 
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....
 
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

  • PHP.png
    PHP.png
    14,3 KB · Visite: 412
Hai lasciato un qualche
PHP:
echo $qualcosa
in qualche if/switch, o in alternativa hai stampato i dati di qualche elaborazione!
 
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.
 
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
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è ?
 
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.
 
Ma l'applicazione in questione cosa fa? ossia questa pagina effettua il login?? i dati sono rappresentati in base64 e cosa contengono?
 
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.
 

Discussioni simili