Wie Sie gesehen haben, sind Skill-Injektionen sehr gefährlich und auch sehr leicht zu finden und sehr
leicht zu finden.
Sie finden sie überall auf einigen wirklich berühmten Webseiten.
Menschen versuchen, diese Sicherheitsanfälligkeiten mithilfe von Filtern zu verhindern.
Mit Filtern kann es so aussehen, als gäbe es keine Exploits. Wenn Sie jedoch die Codierung
verschiedener Codierungstypen oder einen Proxy genauer versuchen, können Sie die meisten dieser Filter umgehen.
Einige Programmierer verwenden eine schwarze Liste.
So verhindern sie zum Beispiel die Verwendung von Union.
Sie verhindern die Verwendung von Einlagen und dergleichen.
Wieder ist es nicht zu 100 Prozent sicher.
Sie kann mit einer Whitelist umgangen werden.
Genau dieselben Ausgaben wie bei der Blacklist.
Am besten ist es, Ihre Webanwendung so zu programmieren, dass kein Code eingefügt werden
kann, der dann ausgeführt wird.
Am besten tun Sie dies, indem Sie die Anweisung parameterize verwenden, bei der Daten und Code voneinander getrennt werden.
Und der beste Weg, um Ihnen zu zeigen, was ich damit meine, ist ein Beispiel, bei dem ich am wenigsten
programmiere.
In diesem Beispiel möchte ich nicht, dass es ein Programm und ein Beispiel ist.
Es gibt tatsächlich Fehler in der Programmierung, aber ich versuche, Ihnen das Konzept mehr zu geben
als zu programmieren.
Daher hat der verwundbare Code, den wir uns angesehen haben, zu diesem Zweck einen Stern
aus Konten ausgewählt, bei denen Benutzername gleich dem ist, was wir in Textfeld 1 und dann in Textfeld 1 eingeben.
Sagen wir es einfach hier.
Wir sagten als Männer und schlossen den Code. Dann können wir eine Gewerkschaft auswählen und etwas anderes ausführen.
Und als wir fertig waren, fügten wir den Kommentar hinzu, der im Grunde alles ignoriert, was
danach kommt.
Wenn Sie das also kopieren und hier einfügen, werden Sie sehen,
was passiert.
Es ist also eine Auswahl.
Jetzt lassen Sie uns das einfach loswerden, weil der Schnitt einfach nicht schön
ist. Ich werde dazu einfach einen Kommentar hinzufügen, also wird er aus Konten auswählen, bei denen der Benutzername mit
Aardman Union select und Ausführen übereinstimmt was wir wollen
Das ist sehr schlecht und es ist sehr schwer sich dagegen zu schützen.
Wie gesagt, verwenden Sie Filter und alles, was nur das Problem hervorhebt, wird es nicht beheben.
Der beste Weg, dies zu tun, ist die Verwendung der parametrisierten Anweisungen.
Dies ist also der sichere Weg, dies zu tun.
Zuerst bereiten Sie Ihr Statement vor. Die meisten Sprachen wie
BHB und alle haben eine solche Funktion. Sie können aus den Konten, in denen ein Benutzername mit einem
Fragezeichen gleich ist, einen Auswahlstrich vorbereiten, und Sie senden dann die Werte.
Wir wissen jetzt, dass die Skill-Aussage "Stern aus Konten auswählen" ist, bei denen der Benutzername mit etwas übereinstimmt,
und dann den Wert von Textfeld 1 hat.
Selbst wenn wir reinkommen und unsere sehr hinterlistige Aussage hier verwenden, wird die Webanwendung
wissen, dass der Wert dafür admen ist.
Sie versucht zu starten und wählt den Start von Konten aus, bei denen der Benutzername Benutzername und dann
tatsächlich eigene Zitate hinzugefügt werden, und sie versuchen, einen Benutzernamen mit dem folgenden Benutzernamen zu finden.
Das Ganze wird also so ausgeführt, dass es
als nächstes von Accounts kommt, bei denen username gleich ist, wie viele union diesen Hashtag auswählen.
Es wird also nie ein Hebel für das, was Sie in Ihr Textfeld eingeben, als Wert gesendet, und die Webanwendung weiß, dass dies
ein Wert ist.
Es ist kein Code und wird niemals ausgeführt.
Dadurch schützen Sie sich vor Escurial-Injektionen.
Sie können die Filter als zweite Verteidigungslinie verwenden.
Ich empfehle Ihnen auch, die geringstmöglichen Privilegien zu verwenden. Verwenden Sie daher für jede Datenbank einen Benutzer mit der geringsten Anzahl an Privilegien.
Lassen Sie die Benutzer also nichts tun, was sie nicht zulassen.
Wenn es sich um eine einfache Website handelt, die nur die Auswahl vornimmt, kann der Benutzer nur auswählen, ob er
nur auswählen und einfügen muss, und nur eine Antwort auswählen.
Und dies ist eine Regel, die Sie bei allem, auch innerhalb der Existenz, beachten sollten.
Stellen Sie sicher, dass die Person mit den Berechtigungen immer so weit wie möglich ist.
Jeder Benutzer hat keine zusätzlichen Berechtigungen, die er nicht benötigt.