Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 12385|Antwort: 0

[Kommunikation] 2011 MSSQL Statement Passwortvalidierung Sicherheitslücken-Tutorial

[Link kopieren]
Veröffentlicht am 26.11.2014 15:47:51 | | |
Als internationaler Standard für Datenbankabfragen wurden SQL-Anweisungen in verschiedenen Programmierumgebungen weit verbreitet verwendet. Als reifes und stabiles System sind Benutzeranmeldung und Passwortverifizierung unerlässlich. In meiner täglichen Programmierarbeit habe ich festgestellt, dass viele Programmierer SQL-Anweisungen verwenden, um Benutzerpasswörter mit einer solchen Anweisung zu überprüfen:
sql="Wähle * aus der Benutzertabelle, wobei name='"+name+"' und password='"+password+"'"
Name und Passwort sind die vom Benutzer eingegebenen Benutzernamen und Passwörter, und die obigen Anweisungen werden ausgeführt, um zu überprüfen, ob Benutzer und Passwort legitim und gültig sind. Durch die Analyse zeigt sich jedoch, dass es fatale Schlupflöcher in den obigen Aussagen gibt. Wenn wir die folgende Zeichenkette im Benutzernamen eingeben: 111'or'1=1 und dann das Passwort beiläufig eingeben, setzen wir es auf aaaa. Nachdem die Variable ersetzt wurde, wird die SQL-Anweisung zu folgendem String:
sql="Select * aus der Benutzertabelle, wobei name='111'or'1=1' und password='aaaa'
Wir alle wissen, dass die select-Anweisung, wenn sie die Abfragebedingungen bewertet, die folgenden und(und)-Operationen ignoriert, wenn sie auf oder(oder)-Operationen trifft, und der Wert 1=1 in der obigen Aussage immer wahr ist, was bedeutet, dass egal welcher Wert im Passwort eingegeben wird, sie die oben genannte Passwortverifikation bestehen kann! Die Lösung dieses Problems ist sehr einfach, und es gibt viele Methoden; am häufigsten wird die Legitimität des Benutzers und des verwendeten Passworts vor der Überprüfung bewertet, und Sonderzeichen wie einfache Anführungszeichen und Gleichheitszeichen sind nicht erlaubt.
Die oben genannten Probleme, auch wenn sie einfach erscheinen mögen, existieren doch. Zum Beispiel hatte die frühe Version des berühmten Online-Spiels "Smiling Proud Jianghu" im Internet ein solches Problem, und der Autor analysierte auch sorgfältig einige der Programme, die er zuvor geschrieben hatte, nachdem er den Schwachstellenbericht zu diesem Spiel gelesen hatte, wobei es viele solcher Schlupflöcher gab. Das sollte wirklich unsere Aufmerksamkeit sein. Dies zeigt auch den Mangel an Programmiererfahrung und Sicherheitsbewusstsein junger Programmierer, einschließlich des Autors, auf. Gleichzeitig erinnert es uns daran, dass Programmierer bei der Gestaltung der Programmgestaltung die Sicherheit des Programms vollständig berücksichtigen und nicht nachlässig sein sollten, und ein scheinbar kleiner Auslass ernsthafte Folgen haben kann.




Vorhergehend:SQL 2005 Datenbanksicherheit und referenzielle Integrität
Nächster:2011 MSSQL System Security SA Weak Password Security Risk Tutorial
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com