Frage

Ich arbeite für einen Kunden mit einer riesigen Erbe Codebasis, bestehend aus verschiedenen Java en JSP-basierten Anwendungen.

Die meisten Abfragen getan, um das Heimat-build 'ORM' System. Einige Anwendungen verwenden Plain Old JDBC. Einige Anwendungen basieren auf Hibernate (ja HQL bauen mit Pluszeichen ist ein potenzielles Problem als auch). Einige der älteren Anwendungen sind in JSP ganz writen.

Ich habe ein paar SQL gefundenen Fehler manuell injizieren. Aber ich konnte wirklich eine Art Tool für potenzielle Schwachstellen suchen.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Ich würde empfehlen, FindBugs (es gibt auch eine Eclipse-Plugin), die diese Probleme aufspüren kann und vieles mehr .

Wir verwenden es bei der Arbeit, es ist schnell und es ist das Geld wert (wie in frei). Wir haben einige gemeinsame Probleme mit ihrer Hilfe gelöst werden.

Andere Tipps

würde ich einige Recherchen schreiben oder eine IDE laden, die für den Einsatz von java.sql.Statement sah aus, als zu PreparedStatement gegenüber.

Wie groß ist Ihre URL Raum? Wenn möglich, ist es am besten SQL-Injection zu versuchen, über HTTP GET und POST-Requests. Es gibt einige Probleme, die durch die Quelle / Bytecode Prüfung gefunden werden können, aber der einzige Weg, sicher zu wissen, welche Arten von potenziell bösartigem Eingang Ihrer Bewerbung akzeptiert ist HTTP-Anforderungen zu verwenden.

CAL9000 ist eine gute SQL-Injection / Cross-Site-Scripting-Test-Tool wenn Ihr Satz von URLs klein ist.

Unternehmen, die über Erkennung falsch behandelt bösartigen Eingang ernst wird eine 3rd-Party mieten Penetrationstests zu tun. White Hat Sicherheit ist ein Anbieter mit denen ich in der Vergangenheit gearbeitet haben und empfehlen können. Wir benutzten sie für eine $ 100 MM + E-Commerce-Website. (Ich habe keine Verbindung mit White Hat und nicht in irgendeiner Weise profitieren, wenn Sie ihre Kunden geworden.)

Alle Tests / Härten des Codes zur Seite, ist es eine sehr gute Idee, einen HTTP-Firewall vorhanden wie mod_security haben .

Als ich auf die Lokalisierung von "this-will-nicht-need-Lokalisierung" Anwendung arbeiten, verwenden wir ein hausgemachtes Werkzeug kompilierten Code zu analysieren (IL in .NET ist es gleich wie Byte-Code in Java) .

Sie können die angegebenen Methoden finden Aufruf, die mit DB (typicaly CRUD-Operationen) Weichen arbeiten, hat einen String-Parameter mit SQL-Befehl, und verfolgt die String-Instanz und prüft für concating.

Wir haben das .NET Reflector für decompiling und Tracking-Zeichenfolgen. Aber ich weiß nicht, ob für Java verfügbar ähnliches Werkzeug ist. (

Sie können für die Prävention gehen eher als heilen. eine Hygienisierung Schicht direkt unter ur UI hinzufügen, so wie Sie es sonst mit SQL / Skripte in Benutzereingaben am Ende. Es muss Beispiele in Java sein, ich habe einen solchen Ansatz in CakePHP gesehen

Sie suchen eine Stelle, die keine PreparedStatement nicht verwendet.

Ich empfehle CAL9000. Sie können Details auf den folgenden Link erhalten:

CAL9000

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top