Verhinderung von SQL-injection mit JavaScript/jQuery
Bin ich mit JSP eine Weile. Ich habe diese select-Anweisung:
query = "SELECT * FROM USER_PASS WHERE USERNAME = '" + name + "'";
Ist anfällig für SQL-Injektionen. Ich suchte einige Artikel und fand, dass ich kann verwenden Sie vorbereitete Anweisungen auf SQL-injections vermeiden. Ich finde es eher verwirrend. Meine Meinung ist, wenn ich finden kann Eingänge, wie ;
, '
oder --
im input gegeben, durch den Benutzer, dann kann ich Ihnen zeigen eine alert-Meldung, dass Sie nicht verwenden können, diese Symbole hier, und ich werde nicht die Daten. So könnte mein JavaScript code:
function validateSQL()
{
var x=document.forms["myForm"]["username"].value;
var pos = 0;
pos=x.indexOf("'");
if (pos!=0)
{
alert("Trying to hack me?");
return false;
}
}
Was ist besser zu verwenden? Hat das irgendwelche Nachteile?
- Wer sagt, dass der Angreifer mit dem frontend? Automatisierte SQL-injection-tools nur senden von HTTP-Anforderungen.
- Ich Schreibe ein preparedstatement statt dieser javascript code dann wird es verhindern, dass Injektionen?
- Ich würde +10 Blender ' s Kommentar, wenn ich könnte - glauben Sie nicht der client. Vorbereitete Anweisungen, die auf dem server verhindern, dass alle SQL-injection-Angriffe (aber nicht unbedingt andere Oberflächen). Nicht: Verhindern, dass schlechte Informationen, ist ausserhalb der Möglichkeit von SQL-injection-Angriffe.
- Soll ich also löschen der Frage? Ich bekam die Antwort, die ich suchte. Aus deinem Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du absolut nicht davon abhängen, JavaScript auf dem Client, um Sie zu schützen; böswillige Benutzer können problemlos umgehen jede client-Seite überprüft .. Sie können einfach deaktivieren Sie JavaScript im browser.
Nur weil etwas verwirrend ist, bedeutet nicht, dass Sie sollten es nicht tun; parametrisierte Abfragen sind nicht verwirrend, so sollten Sie üben und lernen, bis Sie verstehen.
; , --
sind nicht einmal in die Nähe der nur Symbole, die könnte dazu führen, dass SQL-Injection.Ich bin nicht vertraut mit JSP, die Methode für die Vorbereitung der Anfragen scheint einfach genug.