Empfohlen: über das Baumverzeichnis von DHTML XML ASP CSS sprechen Tree Directory zeigt Programmproblembeschreibung an: In unseren Projekten werden häufig selbst assoziierte Datentabellen angezeigt. Wenn wir sie aus der Gesamtperspektive betrachten, wird die gesamte Tabelle als Baumdatenstruktur dargestellt (für komplexe Fälle kann sie zu einem Diagramm werden). Wenn wir diesen Tisch machen
Bei der ASP -Programmierung kann häufig gesagt werden, dass die Identitätsauthentifizierung verwendet werden. Aber wie können wir Authentifizierungssicherheit erreichen?
Seite Formulare: sub.htm
| Das Folgende ist der zitierte Inhalt: <html> <kopf> <title> Administrator Login </Titel> <body> <Formular name = Form1 Methode = post action = sub.asp> <p> Administrator: <Eingabe type = text name = userID size = 25 maxLength = 20> Passwort: <Eingabetyp = Textname = Pass size = 12 maxLength = 20> <Eingabe type = senden name = Senden Wert = Senden> </p> </form> </body> </html> |
| Das Folgende ist der zitierte Inhalt: Sub.asp -Programm <% Empfangen Sie Daten aus dem Formular user = request.from (userId) Überprüfen Sie, ob die im Formular eingereichten Daten leer sind (die Formularseite kann von JavaScript oder VBScript gesteuert werden, vergessen Sie jedoch nicht, es hier zu steuern! Wenn Benutzer = dann Gehen Sie zur Fehlereingabeseite! Antwort.Redirect Err1.htm Dieser Satz mag nutzlos sein, aber es ist besser, ihn hinzuzufügen! Antwort.end Ende wenn pass = request.from (Pass) Wenn Pass = dann Antwort.Redirect Err2.htm Antwort.end Ende wenn Treten Sie der Datenbank bei Datei = Server.Mappath (Ihre Datenbank) Setzen Sie conn = server.createObject (adodb.Connection) DR = DRAVER = {Microsoft Access Driver (*.mdb)}; dbq = & Datei Conn.open Dr. Setzen Sie rs = server.createObject (adodb.Recordset) Der Schlüssel ist die SQL -Sprache hier SQL = Select * aus der Tabelle, wobei user = & user & und und pass = & pass & pass & Rs.open SQL wenn nicht rs.eof dann Wenn Sie gefunden werden, gehen Sie zur Verwaltungsseite reponse.Redirect login.asp anders Wenn nicht gefunden, geben Sie die Fehlerseite ein Antwort.Write err3.htm Ende wenn %> |
Jeder hat das Gefühl, dass der obige Code in Ordnung sein sollte, aber hier ist ein schwerwiegendes Sicherheitsrisiko:
Wenn ich mich beim Administrator anmelden möchte, kann ich es in das Eingabefeld von Sub.htm -Formular eingeben:
Geben Sie in das erste Textfeld ein: a oder 1 = 1 oder oder = =
Geben Sie in das zweite Textfeld ein: a oder 1 = 1 oder oder = =
Senden Sie es, Sie werden sehen ... woo, hör mir zu, ist es gut, fertig zu werden, die Ziegel werden wieder übergeworfen ...
a und 1 sind irgendwelche Charaktere
Jemand kann fragen, warum Sie diese Zeichen als Administrator eingeben? ?
Tatsächlich sind diese Charaktere eine Täuschung der SQL -Sprache in Ihrem Programm und werden erfolgreich eingegeben.
Jeder sehen: Starten Sie das Programm SQL ist ein Datensatz, der die Tabelle abfragt und auf die Benutzer = & user & und und pass = & pass & Bedingungen erfüllt.
SQL = Select * aus der Tabelle, wobei user = & user & und und pass = & pass & pass &
Ich habe den obigen Code eingegeben und es wurde:
SQL = SELECT * Aus der Tabelle, wobei Benutzer = A oder 1 = 1 und Pass = A oder 1 = 1
Lassen Sie uns einen Blick darauf werfen, kann es einen Grund geben, nicht teilzunehmen? ? Gib mir einen Grund, zuerst nicht einzusteigen!
Das obige Benutzerpassfeld ist ein Zeichentyp, und wenn es sich um einen numerischen Typ handelt, ist das gleiche wahr!
Lösung:
1. Funktion Alternative Methode:
Verwenden Sie Ersatz, um den Inhaltseingang durch den Benutzer mit Sonderzeichen zu ersetzen, um den Steuerzweck zu erreichen! SQL = SELECT * Aus der Tabelle, wobei user = & ersetzen (Benutzer,,) & und und pass = & ersetzen (pass,,) &
Diese Methode kann jeweils nur ein Zeichen ersetzen. Tatsächlich sind die gefährlichen Charaktere nicht nur, sondern auch Charaktere wie>, <, &, %, die vollständig kontrolliert werden sollten. Aber was soll ich tun, wenn ich mit der Ersatzfunktion nicht kompetent zu sein scheine? ?
2. Programmkontrollmethode
Verwenden Sie das Programm, um alle vom Client eingegebenen Inhalte zu steuern, damit Sie alle vom Client eingegebenen möglichen gefährlichen Zeichen oder Codes vollständig steuern können. Ich werde diese Methode machen!
| Das Folgende ist der zitierte Inhalt: <% Erfassen Sie den vom Benutzer eingereichten Formularinhalte user = request.from (Benutzer) pass = request.from (Pass) ... Die Zykluskontrolle beginnt für i = 1 bis len (Benutzer) Verwenden Sie die MID -Funktion, um ein Zeichen an der I -Position im variablen Benutzer zu lesen US = Mid (Benutzer, i, 1) Vergleich von Lesezeichen Wenn wir = oder US =% oder US = <oder US => oder US = & dann Wenn die oben genannten Zeichen enthalten sind, wird eine Fehlermeldung erfolgt. Die obigen Sonderzeichen können nicht enthalten sein. Antwort.Redirect Err2.htm Antwort.end Ende wenn nächste ... %> |
Share: ASP und gespeicherte Verfahren analysieren Es gibt viele Artikel zu ASP und gespeicherten Verfahren, aber ich bezweifle, dass die Autoren es tatsächlich geübt haben. Ich habe viele relevante Informationen gelesen, als ich am Anfang war, und stellte fest, dass viele der bereitgestellten Methoden in der Praxis nicht der Fall waren. Für einfache Anwendungen ist dies