Ewebeditor und fckeditork Editor filtern einfache Anführungszeichen
Wir haben die Schreibmethode SQL=insert into product(title,content) value(' &request(title)& ' ,' &request(content)& ' ) verwendet, sodass wir den Inhalt gefunden haben, den der Kunde zu diesem Zeitpunkt in den Editor kopiert hat , und stellte fest, dass dieser Inhalt tatsächlich einfache Anführungszeichen enthielt. Es stellte sich heraus, dass unsere SQL-Anweisung genau deshalb geändert wurde, weil der vom Kunden an den Editor übermittelte Inhalt einfache Anführungszeichen enthielt, was SQL = in Produkt einfügen entspricht. title,content)-Werte („content“ ,'content') wird zu SQL=insert into product(title,content) Values('content','content''). Es liegt ein schwerwiegender Schreibfehler vor. Wir sind jedoch auch überrascht, dass die SQL-Anweisung keine Fehlermeldung ausgibt, sondern auch anzeigt, dass der Vorgang erfolgreich ist Denken Sie an die gewöhnlichen kleinen Hacker in den Jahren 2003. Verwenden Sie gerne „oder“ = „oder“ Die Hintergrund-Intrusionsmethode nutzt offenbar den Fehler aus, dass einfache Anführungszeichen bei der Ausführung von SQL nicht gefiltert werden. Daher gibt das Ergebnis, egal wie SQL ausgeführt wird, „true“ zurück Das Schreiben des Programms sollte so einfach und klar wie möglich sein, was auch ein Fehler ist. Okay, das Problem wurde gefunden. Bevor das gesamte SQL in die Datenbank eingegeben wird, werden wir die Felder filtern, bevor der Wert übergeben wird, sodass dieses Problem nicht mehr auftritt. Nachfolgend finden Sie eine sehr vollständige SQL-Sicherheitsfilterfunktion. Sie können es einfach verwenden.
Funktion HTMLEncode(Str)
Wenn Isnull(Str) Dann
HTMLEncode =
Exit-Funktion
Ende wenn
Str = Ersetzen(Str,Chr(0),, 1, -1, 1)
Str = Ersetzen(Str, , ", 1, -1, 1)
Str = Ersetzen(Str,<,<, 1, -1, 1)
Str = Ersetzen(Str,>,>, 1, -1, 1)
Str = Replacement(Str, script, script, 1, -1, 0)
Str = Ersetzen(Str, SCRIPT, SCRIPT, 1, -1, 0)
Str = Replacement(Str, Script, Script, 1, -1, 0)
Str = Replacement(Str, script, Script, 1, -1, 1)
Str = Ersetzen(Str, Objekt, Objekt, 1, -1, 0)
Str = Ersetzen(Str, OBJECT, OBJECT, 1, -1, 0)
Str = Replacement(Str, Object, Oobject, 1, -1, 0)
Str = Ersetzen(Str, Objekt, Objekt, 1, -1, 1)
Str = Ersetzen(Str, applet, applet, 1, -1, 0)
Str = Ersetzen(Str, APPLET, APPLET, 1, -1, 0)
Str = Ersetzen(Str, Applet, Applet, 1, -1, 0)
Str = Replacement(Str, applet, Applet, 1, -1, 1)
Str = Ersetzen(Str, [, [)
Str = Ersetzen(Str, ], ])
Str = Ersetzen(Str, , , 1, -1, 1)
Str = Ersetzen(Str, =, =, 1, -1, 1)
Str = Ersetzen(Str, ', '', 1, -1, 1)
Str = Ersetzen(Str, select, sel'ct, 1, -1, 1)
Str = Replacement(Str,execute,execute, 1, -1, 1)
Str = Ersetzen(Str, exec, exec, 1, -1, 1)
Str = Replacement(Str, join, join, 1, -1, 1)
Str = Replacement(Str, union, union, 1, -1, 1)
Str = Replacement(Str, where, wh're, 1, -1, 1)
Str = Replacement(Str, insert, insert, 1, -1, 1)
Str = Replacement(Str, delete, del'te, 1, -1, 1)
Str = Ersetzen(Str, update, update, 1, -1, 1)
Str = Replacement(Str, like, like, 1, -1, 1)
Str = Ersetzen(Str, drop, drop, 1, -1, 1)
Str = Replacement(Str, create, create, 1, -1, 1)
Str = Replacement(Str, rename, ren'me, 1, -1, 1)
Str = Ersetzen(Str, count, count, 1, -1, 1)
Str = Ersetzen(Str, chr, chr, 1, -1, 1)
Str = Ersetzen(Str, mid, mid, 1, -1, 1)
Str = Replacement(Str, truncate, trunc'te, 1, -1, 1)
Str = Ersetzen(Str, nchar, nch'r, 1, -1, 1)
Str = Ersetzen(Str, char, ch'r, 1, -1, 1)
Str = Ersetzen(Str, alter, alter, 1, -1, 1)
Str = Ersetzen(Str, cast, ca't, 1, -1, 1)
Str = Replacement(Str, exist, exists, 1, -1, 1)
Str = Ersetzen(Str,Chr(13), , 1, -1, 1)
HTMLEncode = Ersetzen(Str,','', 1, -1, 1)
Funktion beenden