xss - Abfangen von SQL Injection und anderen schädlichen Webanforderungen

Translate

Ich suche nach einem Tool, das böswillige Anforderungen erkennen kann (z. B. offensichtliche SQL-Injection-Abrufe oder -Postings) und die IP-Adresse des Anforderers sofort sperrt / zu einer Blacklist hinzufügt. Ich bin mir bewusst, dass unser Code in einer idealen Welt in der Lage sein sollte, solche Anfragen zu verarbeiten und entsprechend zu behandeln, aber ein solches Tool ist sehr wertvoll, selbst wenn die Site vor solchen Angriffen sicher ist, da dies dazu führen kann Bandbreite sparen, Aufblähen von Analysen verhindern usw.

Idealerweise suche ich eine plattformübergreifende (LAMP/.NET) Lösung, die sich auf einer höheren Ebene als der Technologie-Stack befindet; möglicherweise auf Webserver- oder Hardwareebene. Ich bin mir jedoch nicht sicher, ob dies existiert.

In jedem Fall würde ich gerne das Feedback der Community hören, damit ich sehen kann, welche Optionen ich in Bezug auf Implementierung und Vorgehensweise habe.

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Wenn Sie es fast falsch sehen, wird kein 3-Parteien-Tool, das Ihre Anwendungsmethoden / Namen / Daten / Domänen nicht kennt, Sie perfekt schützen können.

So etwas wie die Verhinderung von SQL-Injection muss im Code enthalten sein und am besten von den Personen geschrieben werden, die SQL geschrieben haben, da sie wissen, was in diesen Feldern sein sollte / nicht (es sei denn, Ihr Projekt verfügt über sehr gute Dokumente )

Ihr Recht, das alles wurde schon einmal gemacht. Sie müssen das Rad nicht unbedingt neu erfinden, aber Sie müssen ein neues schnitzen, da sich die Achsdurchmesser aller unterscheiden.

Dies ist kein Drop-In- und Run-Problem. Sie müssen wirklich wissen, was genau SQL Injection ist, bevor Sie es verhindern können. Es ist ein hinterhältiges Problem, daher sind ebenso hinterhältige Schutzmaßnahmen erforderlich.

Diese beiden Links haben mir weit mehr als die Grundlagen zu diesem Thema beigebracht und mir geholfen, meine zukünftigen Suchanfragen zu bestimmten Fragen, die nicht beantwortet wurden, besser zu formulieren.

Und obwohl dies kein 100% iger Finder ist, zeigt er Ihnen das Licht auf vorhandene Probleme in Ihrem vorhandenen Code, aber wie bei Webstandards sollten Sie die Codierung nicht beenden, sobald Sie diesen Test bestanden haben.

Quelle
Mat
Translate

Das Problem mit einem generischen Tool ist, dass es sehr schwierig ist, Regeln zu entwickeln, die nur mit einem echten Angriff übereinstimmen.

SQL-Schlüsselwörter sind alle englischen Wörter und vergessen Sie nicht, dass die Zeichenfolge

 DROP TABLE users;

ist in einem Formularfeld, das beispielsweise eine Antwort auf eine Programmierfrage enthält, vollkommen gültig.

Die einzig sinnvolle Option besteht darin, die Eingabe zu bereinigen, bevor sie jemals an Ihre Datenbank übergeben wird, sie jedoch weiterzuleiten. Andernfalls werden viele ganz normale, nicht böswillige Benutzer von Ihrer Website ausgeschlossen.

Quelle
Translate

Eine Methode, die in einigen Fällen funktionieren könnte, besteht darin, die SQL-Zeichenfolge, die ausgeführt wird, wenn Sie die Formulardaten naiv verwenden, an einen Code zu übergeben, der die Anzahl der tatsächlich ausgeführten Anweisungen zählt. Wenn es größer als die erwartete Anzahl ist, besteht eine gute Chance, dass eine Injektion versucht wurde, insbesondere für Felder, die wahrscheinlich keine Steuerzeichen wie den Benutzernamen enthalten.

So etwas wie ein normales Textfeld wäre etwas schwieriger, da diese Methode viel wahrscheinlicher falsch positive Ergebnisse zurückgibt, aber dies wäre zumindest ein Anfang.

Quelle
Translate

Eine Kleinigkeit, die Sie beachten sollten: In einigen Ländern (dh in den meisten Teilen Europas) haben die Menschen keine statischen IP-Adressen, daher sollte die schwarze Liste nicht für immer sein.

Quelle
Translate

Oracle hat eineOnline-Tutorial zu SQL Injection. Auch wenn Sie eine vorgefertigte Lösung wünschen, kann dies Ihnen einige Hinweise geben, wie Sie sie besser verwenden können, um sich zu verteidigen.

Quelle
Translate

Jetzt, wo ich darüber nachdenke, könnte ein Bayes'scher Filter, der dem zum Blockieren von Spam verwendeten ähnelt, auch anständig funktionieren. Wenn Sie für jedes Feld einen Satz normalen Text und einen Satz SQL-Injektionen zusammengestellt haben, können Sie ihn möglicherweise trainieren, um Injektionsangriffe zu kennzeichnen.

Quelle
Translate

Eine meiner Websites wurde kürzlich über SQL Injection gehackt. Es wurde ein Link zu einem Virus für jedes Textfeld in der Datenbank hinzugefügt! Das Update bestand darin, Code hinzuzufügen, der nach SQL-Schlüsselwörtern sucht. Glücklicherweise habe ich in ColdFiusion entwickelt, sodass sich der Code in meiner Application.cfm-Datei befindet, die am Anfang jeder Webseite ausgeführt wird und alle URL-Variablen betrachtet. Wikipedia hat auch einige gute Links, um zu helfen.

Quelle
ECE
Translate

Interessant, wie dies Jahre später von Google implementiert wird und die URL insgesamt entfernt wird, um XSS-Angriffe und andere böswillige Aktivitäten zu verhindern

Quelle