2017-11-18 3 views
1

ICH HABE MEIN EDIT ANY alte Frage,XHR mehrere Anfrage

ich diesen Code geschrieben haben. Jetzt

<!DOCTYPE html> 

<html> 
<center><h1>csrf testing</h1 > 
<form action=""> 
<input type="submit" onclick="" value="go"> 
</form> 


<script> 
var params = "email=nlkm&username=asc&csrf_token=&go=go"; 

var xhr = new XMLHttpRequest(); 

xhr.onreadystatechange = function(){ 
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200){ 

      var xhr2 = new XMLHttpRequest(); 
      xhr2.open("POST", "useredit.php", false); 
      xhr2.setRequestHeader("Content-Type", "x-www-form-urlencoded"); 
      xhr2.send(params); 


      }   
}; 
xhr.open("GET", "useredit.php", false); 
xhr.send(); 
</script> 


</html> 

, das Problem ist, dass, wenn meine zweite Anfrage Feuer, dann war die Antwort gleiche wie die Antwort auf erste Anforderung. Verwirrt? Okay, ich habe ein Formular, das einen Parameter und ein csrf-Token übermittelt.

Jetzt auf diesen Code gibt es zwei Anfragen ** 1., ist GET-Anfrage auf der Benutzer bearbeiten Seite und die zweite ist POST-Anfrage, die das Formular, das auf der Benutzer-Bearbeitungsseite und die Antwort der Das Formular wird auf derselben Seite angezeigt.

Wenn ich nun das Formular über diesen Code absende, ohne das csrf-Token bereitzustellen, war die Antwort dieselbe wie meine Antwort auf die erste Anfrage. Es sollte eine Antwort geben, dass das Token ungültig ist, aber es nicht tat.

Dann Was ist das Problem hier? Ich hoffe du verstehst das jetzt?

Antwort

0

Geben Sie Anführungszeichen in die Abfragezeichenfolge ein.

$sql2 = "SELECT * FROM userinfo WHERE email ='".$_GET['userid']."'"; 

Also, wenn $_GET['userid'] == "[email protected]", wird der Wert von $sql2 sein:

"SELECT * FROM userinfo WHERE email ='[email protected]'" 

mit Anführungszeichen um den Eingabewert.

In Ihrer Version wäre der Wert:

"SELECT * FROM userinfo WHERE email [email protected]" 

die ungültige SQL ist.

+0

Wunderbare Antwort wie ich Aspekt. Aber kannst du das bitte erklären? Weil ich das wissen will. Was ist plötzlich passiert? –

+0

Ich schreibe Zitate um die Benutzer-ID in der SQL. – Barmar

+0

Ja! Ich hab es geschafft. aber ein anderes Problem, dem ich hier gegenüberstehe. Es ist von hier weg, aber sowieso. Wenn ich ** 1 '** einreiche, dann habe ich einen SQL-Fehler **' '1' '' ** und natürlich weißt du das. Aber wenn ich es durch den Kommentar kommen ** - + ** Ergebnisse normal. Warum? die volle Nutzlast war ** "1" - + "** so Wie die Abfrage es verbindet? ** "1" ** ist nicht gültig? –

Verwandte Themen