2017-07-03 3 views
0

Die Injektionsverfahren sind:SQL-Injection-Methode

SELECT UserId, Name, Password FROM Users WHERE UserId = 105 or 1=1; 

Aber meine Frage, wie die Injektion Abfrage in der SQL zu arbeiten?

+1

Beim Hinzufügen von 'oder 1 = 1' wird die Anweisung' WHERE' irrelevant und gibt immer true zurück, und daher wird die Abfrage immer ausgeführt. –

+3

Mögliches Duplikat von [Gefunden 'ODER 1 = 1/\ * sql Injektion in meiner Newsletter-Datenbank] (https://stackoverflow.com/questions/13867266/found-or-1-1-sql-injection-in-my- newsletter-database) – karthik006

Antwort

1

sein, wenn Sie Ihre Abfrage als Zeichenfolge in Ihrem Code haben, so etwas wie diese

Query = "SELECT UserId, Name, Password FROM Users WHERE UserId = '" + sUserID + "'" 

So passieren Sie sUserID = "ABC‘ OR 1 = 1;"

dies wird wie

SELECT UserId, Name, Password FROM Users WHERE UserId = 'ABC' OR 1=1 
+1

danke das wäre hilfreich für mich ..... –

+0

@IsmayilS gerne zu hören, dass ich geholfen habe :) bitte markieren sie als antwort, wenn es so war – asmgx

1

Da die Bedingung übersetzt werden 1=1 ist immer true, es am Ende einer WHERE Aussage Zugabe macht es irrelevant, und immer true, als ob die WHERE Anweisung an nicht vorhanden alle. Daher wird die Abfrage immer ausgeführt, unabhängig von anderen Bedingungen, die der WHERE-Anweisung hinzugefügt wurden.

Im Beispiel Sie zur Verfügung gestellt, wenn Sie Ihren Benutzern erlauben, ihre eigenen aufzuschreiben userID, sie 105 or 1=1 in den Eingabefeldern oder in einer URL-Adresse der Website, und da or 1=1 macht UserId=105 nutzlos, und die Abfrage auswählen, wird immer schreiben die Daten, daher die SQL-Injektion.