dedlfix: Problem wg. Sicherheit mit Provider

Beitrag lesen

Hi!

Bei einem Sicherheits-Infoabend wurde gezeigt, wie man über phpMyAdmin einbrechen kann. Dem konnte ich ja nun wirklich nicht abhelfen.

Grundlegend kann man schon mal einen Zugriffsschutz über HTTP-Authentication davorschalten, da muss man schon erstmal am Apachen vorbeikommen.

Und bisher habe ich Glück gehabt ...

Deine Seite ist aber weiterhin alles andere als sicher. Mit nur einem in die URL eingefügten Zeichen, das du nicht erwartest, bekommt man komplette SQL-Statements angezeigt. Das mag für dich zum Debuggen komfortabel sein, für einen böswilligen Angreifer ist es das aber auch.

Es würde sich wirklich lohnen, wenn du grundlegend lernen würdest, welche Unterlassungssünden zu den gravierendsten Lücken führen, nämlich vor allem die nicht beachteten Kontextwechsel.

Bis heute weiss ich nicht, wo die Schwachstelle war, habe aber meinen Code überarbeitet. Auf jeden Fall dürfen die vom Server automatisch generierten Slashes (") vor den Datenbank- Zugriffen auf keinen Fall entfernt werden.

Diese Aussage ist falsch. Die Slashes werden von PHP eingefügt. Das Feature nennt sich Magic Quotes und ist in der nächsten Version von PHP nicht mehr dabei. Schon in aktuellen Versionen ist es im Auslieferungszustand deaktiviert (zumindest in der empfohlenen Variante der php.ini). Es bereitet gelegentlich und unbemerkt, weil wieder mal vom Programmierer nicht beachtet, mehr Probleme als es löst, weil es an der falschen Stelle ansetzt.

Des weiteren gibt es auch noch Datenbankzugriffe, bei denen die Daten sonstwoher stammen. Auch diese müssen SQL-gerecht behandelt werden, nicht nur Benutzereingaben. Zwei Systeme zu haben, wie man mit den unterschiedlichen Daten umgehen muss, ist auch nicht gerade übersichtsfördernd. Deshalb erst - und das aber konsequent - beim Übergeben in einen anderen Kontext die Daten diesem entsprechend behandeln. Die Verarbeitung erfolgt in Rohform, also ohne irgendwelche Maskierungzeichen für spätere Kontexte und die Eingabedaten müssen von einer eventuell vorhandenen Transportsicherung befreit werden. (Das war jetzt rückwärts aufgezählt. Die EVA findet ja üblicherweise andersrum statt: Eingabe -> Verarbeitung -> Ausgabe).

Lo!